私はC言語の新入生で、これを思いつきました。私はコードします:
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[80];
printf("Enter sth: ");
char st1 = gets(str);
printf("Enter sth: ");
char st2 = gets(str);
if(strcpy(st1,st2))
printf("Same\n");
else
printf("Different\n");
return 0;
}
私の目標は、キーボードから入力した 2 つの文字列が同じかどうかを確認することです。コンパイルすると、いくつかの警告が表示されます。
hello.c: 関数 'main' 内: hello.c:9:16: 警告: 初期化により、キャストなしでポインタから整数が作成されます [デフォルトで有効]
hello.c:12:16: 警告: 初期化により、キャストなしでポインタから整数が作成されます [デフォルトで有効]
hello.c:14:5: 警告: 'strcpy' の引数 1 を渡すと、キャストなしで整数からポインターが作成されます [デフォルトで有効]
/usr/include/string.h:128:14: 注: 'char * restrict ' が必要ですが、引数の型は 'char' です</p>
hello.c:14:5: 警告: 'strcpy' の引数 2 を渡すと、キャストなしで整数からポインターが作成されます [デフォルトで有効]
/usr/include/string.h:128:14: 注: 'const char * restrict ' が必要ですが、引数の型は 'char' です</p>
Enter sth: asd
Enter sth: asd
Output : Segmentation fault (core dumped)
Segmentation Fault 存在しない sth にアクセスしようとするとエラーになることがわかりました。
ここ Stackoverflow で同様の質問とここで少し検索しますが、このコードが機能しない理由がわかりません。ありがとうございました!