0

私は C プログラミングの初心者で、ポインターの概念を学び始めたばかりです。正しくやっていると思っているのに、コードがセグメンテーション違反で終わる理由を誰か説明してもらえますか? メモリ割り当ての概念が不足している可能性があります。ここの誰かがそれらを詳細に説明したり、私のような問題の説明を見つけることができる場所へのリンクを教えてくれることを願っています.

char strs(char *s, char *k)
{
    int flag=0;
    do
    {
        if(*k=='\0') return (*(s-flag));
        if(*s==*k)
        {
            k++;
            flag++;
        }
        if(flag!=0 && *s!=*k)
        {
            k=k-flag;
        }   
        s++;
    } while(*s!='\0');
    return('\0');
}

main()
{
    char s[10],k[5];
    printf("Please enter the main string: ");
    scanf("%s",s);
    printf("Please enter the key string: ");
    scanf("%s",k);
    if((strs(s,k))!='\0') printf("The pointer is at <<<%s>>> in %s",strs(s,k),s);
    if((strs(s,k)=='\0')) printf("\nKey string not found, value of strs is %s", strs(s,k));
}
4

1 に答える 1

1

strs 関数は char を返しますが、%s 書式指定子を使用して出力しようとしています。単一の文字を出力するには、%c を使用します。

printf("The pointer is at <<<%c>>> in %s",strs(s,k),s);
于 2013-04-14T22:37:10.430 に答える