より明確になるようにコードが書き直されました
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;
}
こんにちは、私は上記の2つの組み合わせを試しました。
word []-> word [i ++]
* word-> * word ++
EOFに到達する場合を除いて、すべてが問題なく機能します。この場合、ポインター構文はセグメンテーション違反で失敗しますが、配列構文は失敗しません。
私はCの完全な初心者ですが、誰かがここで何が起こっているのかを初心者の言葉で説明し、ポインター構文を修正するための解決策を提案できますか?(しかし、ほとんど説明してください)