代碼重寫,以更清晰指針和字符串,沒有對EOF
void indexe(char * line, unsigned ref) {
unsigned i = 0;
char word[128]; //(1)
//char * word; //(2)
while(*line) {
if(isalpha(*line))
word[i++] = *line; //(1)
//*word++ = *line; //(2)
*line++;
}
}
int main(int argc, const char * argv[]) {
char line[128];
FILE * f = fopen(argv[1], "r");
unsigned x = 0;
while (fgets(line, 128, f)){
indexe(line, ++x);
}
fclose(f);
return 0;
}
你好,我已經嘗試了上述兩種組合:
word[] -> word[i++]
*word -> *word++
整件事情完美無瑕,除非達到EOF,在這種情況下指針合成x出現分段錯誤,但不是數組語法。
我是一個C初學者,有人可以用初學者術語解釋這裏發生了什麼,也許建議一個解決方案來修復指針語法? (但主要是講解,請)
你真的'#define str char *'?布萊什。 – 2013-03-14 20:49:20
str和idx是什麼?這不是你的實際代碼。它也沒有關閉main。 – 2013-03-14 20:51:04
我的不好,是的,idx是#define無符號的 – pouzzler 2013-03-14 20:53:10