我現在正在學習C,並且直接從我正在使用的書中複製了這個小片段。它運行時出現段錯誤,我無法弄清楚爲什麼,我通過gdb運行它,並在第9行scanf(「%s」,aName)處停止;但是打印這些變量的值不會帶來可疑的外觀。這件事有什麼問題?C - 調用scanf()時的程序段錯誤
#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;
}
編輯:我忘了提及,它甚至沒有顯示提示或讓我輸入名稱。它在執行後立即崩潰。
如何使用標準strlen函數而不是nameLenght?你輸入的名字有多長? – 2010-01-27 14:33:00
你得到了你的答案,但考慮使用其他書。在這種情況下'scanf'不是一個安全的函數,並且具有上述代碼的書不能很好。 – 2010-01-27 14:58:53
使用fgets比使用scanf更安全。你也應該檢查你的返回代碼,看看scanf是否成功返回。 – ant2009 2010-01-27 15:51:31