使用C逐行读取文件

时间:2017-04-03 22:46:28

标签: c

我正在开发一个逐行读取txt文件的程序,并将每行复制到一个空文本文件中。首先,程序读取字符直到行尾,并存储在缓冲区中读取的所有字符。之后,它将缓冲区写入文本文件,并重复此过程,直到它到达文件末尾。我面临的问题是:程序只写入空文件中的第一行。请帮忙解决这个问题,我是c的新手。

我要阅读的内容txt文件:

hey everyone
how are you
goood    

这个程序的输出: 嘿大家

这是源代码:

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int GetFileLenght(FILE*FP);

int main()
{
    FILE *SourceFile;
    FILE *DestinationFile;
    int c;
    int i=-1;
    int x=1;
    char buffer[350];
    int lenght;

    lenght=GetFileLenght(SourceFile);
    printf("%d",lenght);
    SourceFile=fopen("D:/SourceFile.txt","r");

    while(i!=lenght)
    {
        c=fgetc(SourceFile);
        printf("%c",c);

        switch(c)
        {
        case '\n' :
            DestinationFile=fopen("d:/des.txt","a+");
            fputs(buffer,DestinationFile);
            *buffer=0;
            fclose(DestinationFile);

            break;

        default:
            i++;
            buffer[i]=c;
            printf("%s",buffer);
        }
    }
    return 0;
}

int GetFileLenght(FILE*FP)
{
    FP = fopen("d:/SourceFile.txt", "a+");
    fseek(FP, 0, SEEK_END);
    int lengthOfFile = ftell(FP);
    fclose(FP);
    return lengthOfFile;
}

编辑: 我对该计划做了一些改动,现在它很好:

我也想知道是否有另一种方法可以使用fputs添加新行到文件?

#include <stdio.h>
#include <stdlib.h>
#include<string.h>


int main()
{

FILE *SourceFile;
FILE *DestinationFile;
int c=0;
int i=-1;
int x=1;

char buffer[350];



SourceFile=fopen("D:/SourceFile.txt","r");
DestinationFile=fopen("d:/des.txt","a+");

while(x)
{
    c=fgetc(SourceFile);




    switch(c)
    {


    case '\n' :

        fputs(buffer,DestinationFile);
        fprintf(DestinationFile,"\n");
        printf("%s",buffer);
        strncpy(buffer, "", sizeof(buffer));

        i=-1 ;


        break;

    case  EOF :
        fputs(buffer,DestinationFile);
        x=0;

    default:
        i++;
        buffer[i]=c;

    }
}

fclose(DestinationFile);


return 0;
}

0 个答案:

没有答案