この構造の定義では:
struct word {
char *cont; //content of the word
char *wsp; //whitespace following the word
int ctr;
};
一言で言えば、私はstdinから最初の単語を取得し、それに続くすべての空白を含む関数を作成しようとしています。ここにあります:
struct word *getword(){
char cont[WORDLIM];
char wsp[WORDLIM];
cont[0] = '\0';
wsp[0] = '\0';
if (peekchar() == EOF) return NULL; //peekchar defined elsewhere as getting a char and ungetc-ing it
REPEAT{ //macro for for(;;)
char c = getchar();
char buf[2];
buf[0]=c;
buf[1]='\0';
if (c == '\n' || c == ' '){
strcat(wsp, buf);
if (peekchar() != '\n' && peekchar() != ' '){
struct word *toret;
toret = malloc(sizeof(struct word));
toret->cont = cont;
toret->wsp = wsp;
toret->ctr = -1;
printf("---%s---\n", toret->wsp); //just for debugging
return toret;
}
continue;
}
}
printf("PANIC PANIC PANIC THIS IS GOING WROOOOONG!!!!!\n");
return NULL;
}
楽しいのは、デバッグ行のためだけに空白の正しい出力を取得できることですが、getword()-> wspにアクセスしようとすると、ランダムなガベージが発生します。さらに興味深いことに、getword()->contは機能します...
私はCの本当に初心者です...私は何を間違えましたか?