我试图从简单格式化的文本文件中提取相关的缩写和描述,但我只在一行上遇到问题,而其他每一行都正常工作。
在我读取的文本文件中,第5-7行是:
5. FW Foreign word
6. IN Preposition or subordinating conjunction
7. JJ Adjective
我尝试对每一行做的是读取缩写并将其存储为字符数组,然后对描述执行相同的操作。对于除#6之外的每一行,它都可以正常工作。
我的期望是:
print decription[line6] => "Preposition or subordinating conjunction"
但我得到的是:
print decription[line6] => "Preposition or subordinating conjunctio"Adjective"
我很遗憾为什么会这样做。它似乎是从下一行读取数据。或许我最终覆盖了该阵列的下一行。
#include <stdio.h>
int main(){
FILE *fileToRead = fopen("PennTreebank_POS_Tags.txt", "r");
FILE *fileToWrite = fopen("newFile.txt", "w");
int i, j;
i = j = 0;
int nextChar;
char abbreviation[50][5];
char description[50][40];
while( fscanf(fileToRead, "%*s %s ", abbreviation[i]) != EOF ){
description[i][0] = '"';
while( ((nextChar = fgetc(fileToRead)) != '\n') && (nextChar != EOF) ){
description[i][j] = nextChar;
j++;
}
description[i][j] = '"';
description[i][j+1] = '\0';
j=1;
i++;
}
for( i=0; i<36; i++ ){
printf("%s %s\n", abbreviation[i], description[i]);
}
}
答案 0 :(得分:3)
文字&#34;介词或从属连词&#34;长度为40个字符。
所以数组
char description[50][40];
的大小不足以保持长度为40 加 0终止符。