我有一个程序可以打开一个文本文件并逐行阅读。它还将每一行放入一个数组中。当我使用此函数并尝试在printf语句中使用每一行时,会添加换行符。
我的代码:
char fileContents[MAX_LINES][MAX_LINE_LENGTH];
int lineCount = 0;
FILE *ifp = fopen("Tree-B.txt", "r");
if (ifp == NULL)
{
printf("Error opening file!\n");
exit(1);
}
while (fgets(fileContents[lineCount++], MAX_LINE_LENGTH, ifp) != NULL);
fclose(ifp);
printf("Name: %s is now %s", fileContents[0], fileContents[1]);
输出如下:
Name: Tree Bacon
is now 30.21
printf正在添加换行符,我似乎无法发现为什么会这样。
从我的文本文件中读取的两行是:
Tree Bacon
30.21
答案 0 :(得分:0)
由于fgets
也存储了尾随换行符,因此您可以使用strchr
将其删除:
char *ptr;
while (fgets(fileContents[lineCount], MAX_LINE_LENGTH, ifp) != NULL) {
ptr = strchr(fileContents[lineCount], '\n');
if (ptr != NULL) {
*ptr = '\0';
}
linecount++;
}
答案 1 :(得分:0)
我最喜欢的方法是newline
fgets
删除strcspn
的{{1}}阅读。{/ 1}}
while (fgets(fileContents[lineCount], MAX_LINE_LENGTH, ifp) != NULL) {
fileContents[lineCount] [ strcspn(fileContents[lineCount], "\r\n") ] = 0;
linecount++;
}
当然,您必须推迟增加数组索引。