C文本处理:输出大小错误
我正在写一个需要文本文件的ac程序,并且只复制没有大小写或标点符号,并且长度为4个或更多字符的单词。 我测试了布尔函数int containsPunctuationOrCaps(char * word)和int longerThanThree(char * word),它们都工作。 但是,我的主要功能只打印至少七个字符的单词,并且任何更长的内容都会被截断。
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 FOUNDn");
return 1;
}
while(fgets(currentWord, sizeof(currentWord), fin) != NULL) {
if(!containsPunctuationOrCaps(currentWord) && longerThanThree(currentWord)) {
Words[count]=currentWord;
printf("%sn",currentWord);
count++;
}
}
fclose(fin);
}
当我改变char * currentWord = malloc(36); char char currentWord []; 它不会读取任何内容。 我如何完成这项工作?
您将currentWord
声明为char *
,它指向动态分配的内存。 sizeof
是在编译时计算的,并且计算出currentWord
类型所需的大小(以字节为单位) - 在你的情况下,存储内存地址/指针所需的大小,这在系统上显然是8字节。 由于fgets
追加了一个终止的