C程序逐行读取文本文件时添加空格

时间:2017-01-26 21:28:03

标签: c file text line newline

我有一个程序可以打开一个文本文件并逐行阅读。它还将每一行放入一个数组中。当我使用此函数并尝试在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

2 个答案:

答案 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++;
}

当然,您必须推迟增加数组索引。