#include <stdio.h>
#include <string.h>
int scomp(char* x, char* y);
int main(void)
{
printf("gimme a string: ");
char* str1;
scanf("%s",str1);
printf("gimme another string: ");
char* str2;
scanf("%s",str2);
printf("comparing them......\n__________\n");
if(scomp(str1,str2) == 0)
{
printf("yup, they are the same\n");
}else if(scomp(str1,str2)== 1){
printf("They are different buddy..\n");
}
return 0;
}
int scomp(char* x, char* y)
{
int n=0;
while(x[n] != '\0')
{
if(x[n] == y[n])
{
n++;
}else{
return 1;
}
}
return 0;
}
它给了我分段错误11,我在最后一部分写的函数肯定有问题,它应该比较字符串。 问题是什么?
答案 0 :(得分:0)
char* str1;
scanf("%s",str1);
char* str2;
scanf("%s",str2);
str1
和str2
未初始化,由于它们是指针,因此您基本上将scanf的结果写入内存中的随机位置。
这就是为什么你得到一个分段错误(你的程序试图写在一个没有被授权写的内存段上)