C - 分段错误和strlen

时间:2015-12-02 02:19:12

标签: c pointers segmentation-fault

我一直试图找出这个分段故障几个小时。每次我使用char *发现我都会遇到一个seg错误。

char* find = malloc(sizeof(char) * 20);

displayMatrix(rowcol, matrix);
// (Don't mind that ^^^)

printf("Enter a word to find in the puzzle : \n");
scanf("%s", &find);
tolower(find);
len = strlen(find) + 1;

当我运行程序时,它会在到达

时出现错误
len = strlen(find) + 1

任何人都知道为什么这样做?提前谢谢。

2 个答案:

答案 0 :(得分:0)

scanf("%s", &find);应该是scanf("%s", find); find已经是字符串的地址。

tolower也不正确:int tolower ( int c );而非int tolower ( char *c );

答案 1 :(得分:0)

其他方法是指向使用const char *的字符串文字并将其余代码更改为:

const char* find = (char*) malloc(sizeof(char)*20);
printf("Enter a word to find in the puzzle : \n");
scanf("%s", find);
printf("find says : I have got this saved under me %s \n", find); //just tried checking if it works
tolower(find); //this surely needs some correction,determine what you want
int len = strlen(find); //you won't require +1 using strlen
printf("%d : It Works Fine.",len);