-2
你好夥計Stackoverflowers!C:有時會出現分段錯誤?
爲什麼下面的代碼有時會拋出Segmentation錯誤(即1/10次)?
控制檯:
輸入字符串
賽車
分段故障
#include <stdio.h>
#include <string.h>
int main()
{
char string_buffer[21];
int i, length;
int flag = 0;
print f("Input a string\n");
scanf("%20s", string_buffer);
length = strlen(string_buffer);
for(i=0; i < length; i++) {
if(string_buffer[i] != string_buffer[length-i-1]) {
flag = 1;
break;
}
}
if(flag) {
printf("%sNot a Palindrome.\n");
}
else {
printf("%sPalindrome.\n");
}
return 0;
}
這不會解決這個問題,但使用'的scanf(「%20S%N」,string_buffer,&長度)描述下的問題;'而不是'strlen的()'。 –
很有可能是因爲它調用了未定義的行爲10/10次... – Olaf
我會建議你使用fgets或getline而不是scanf,因爲你遇到這個問題的方式是因爲iharob指出的最後兩個printf –