在第二次输入后,我的比较字符串的程序失败并出现Segmentation Fault:
#include<stdio.h>
#include<string.h>
int main (void)
{
char* input1;
char* input2;
printf("type something: ");
scanf("%s", &input1);
printf("type something: ");
scanf("%s", &input2);
if(strcmp(input1, input2) == 0)
{
printf("u type the same thing\n");
}
else
{
printf("u not type the same thing\n");
}
}
输出:
sekai92@sekai92-VirtualBox:~/Desktop/C_CPP$ make compare
clang -Wall -Werror -ggdb compare.c -o compare
sekai92@sekai92-VirtualBox:~/Desktop/C_CPP$ ./compare
type something: hello
type something: hello
Segmentation fault (core dumped)
答案 0 :(得分:3)
input
和input1
是未初始化的指针。这导致undefined behaviour(C语言标准术语)。
您需要使用malloc()
或calloc()
分配内容。
或者只是使用本地数组:
char input[SIZE];
char input1[SIZE];