Enr*_* Jr 0 c segmentation-fault
我现在正在学习C,我直接从我正在使用的书中复制了这个小片段.当我运行它时会出现段错误,我无法弄清楚为什么,我通过gdb运行它并且它停在第9行scanf("%s",aName);,但是打印变量的值不会带来任何可疑的外观.这件事怎么了?
#include <stdio.h>
int nameLength(char[]);
main () {
char aName[20] = {'\0'};
printf("\nEnter your first name: ");
scanf('%s', aName);
printf("\nYour first name contains %d letters.", nameLength(aName));
}
int nameLength(char name[]) {
int result = 0;
while (name[result] != '\0') {
result++;
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
编辑:我忘了提,它甚至没有显示提示或让我输入一个名字.它在执行后立即崩溃.
在列表中,您'%s'不是"%s"- 请注意单引号和双引号之间的差异.单引号分隔字符,双引号分隔字符串. scanf()采用字符串第一个参数,因此您需要双引号.