【发布时间】:2014-10-02 01:12:27
【问题描述】:
我正在编写一个 ac 程序,它接受一个单词的文本文件,并且只复制没有大写或标点符号的单词,并且长度为 4 个或更多字符。我已经测试了布尔函数 int containsPunctuationOrCaps(char *word) 和 int longThanThree(char *word) ,它们都可以工作。但是,我的 main 函数只打印至少七个字符的单词,任何更长的单词都会被截断。
int main() {
char *currentWord = malloc(36);
int count = 0;
char *Words[3000];
FILE *fin, *fout;
fin = fopen(INFILE,"r");
if (fin==NULL) {
printf("INPUT FILE NOT FOUND\n");
return 1;
}
while(fgets(currentWord, sizeof(currentWord), fin) != NULL) {
if(!containsPunctuationOrCaps(currentWord) && longerThanThree(currentWord)) {
Words[count]=currentWord;
printf("%s\n",currentWord);
count++;
}
}
fclose(fin);
}
当我改变 char *currentWord = malloc(36); 到 char currentWord[]; 它什么也不读。我该如何完成这项工作?
【问题讨论】:
-
sizeof(currentWord)是sizeof(char *)在你的机器上恰好是 8。 -
谢谢你,你是对的。但是为什么它不接受较小的输入呢?