我试图写下一个子字符串查找器,其作用类似于聊天中的家禽语言拦截器。出于某种原因,每次运行代码时代码都会崩溃。
int main ()
{
char *sent;
char *key1 = "WORD";
printf("Input: \n");
sent = scanf("%d");
if(strstr(sent, key1) != NULL) {
printf("YES");
}
}
答案 0 :(得分:0)
您没有为sent
分配内存。当您编写char *sent
时,指针指向未知地址处的某些未初始化的内存。当你读入它时,它必须有足够的空间来容纳输入 - scanf不会为你分配内存。这是修订后的代码
int main()
{
char sent[16]; /* alloced 16 chars, including '\0' */
char *key1 = "WORD";
printf("Input: \n");
scanf("%s", sent);
if (strstr(sent, key1) != NULL)
printf("YES");
return 0;
}
您还使用了scanf
错误。 %d
说明符读取十进制整数,而不是字符串。对于字符串,您需要%s
。并且scanf
不会返回读取值。它返回一个失败/成功的信号。你需要将地址传递给变量参数列表。
最后一点:如果你正在阅读句子,scanf
是不够的。您需要fgets
:
char buf[80];
fgets(buf, 80, stdin);
然后 buf
将包含标准输入中的前80个字符。