为什么我用fgets()得到一个空的换行符

时间:2015-05-07 12:21:20

标签: c

    argv0 = "delreves";

    int m;
    for(m = 1;m < argc;m++){
        char buffer[256];       
        FILE *fd;
        fd = fopen(argv[m],"r"); 
        if(fd==NULL){
            Error (EX_NOINPUT, "%s", "Fallo");
        }   
        while(fgets(buffer,256,fd)){
            int size = strlen(buffer);

            int l=size-1;
            int j;              
            for(j = 0; j < size/2; j++, l--){
                        char temp = buffer[j];
                    buffer[j] = buffer[l];
                    buffer[l] = temp;
            }
        printf("%s",buffer);            
        }

    fclose(fd);

    }

}

用一周的文件运行程序后我有

./a.out file.txt

yadnom
yadseut
....

如何在第一天之前消除空换行?

1 个答案:

答案 0 :(得分:3)

如果在输入文件中遇到,函数fgets将返回以换行符结尾的字符串。您的算法正在反转字符串,保留换行符,因此它将作为输出的第一个字符。这是你看到的:换行符然后是字符串。如果要消除它,只需丢弃输入的最后一个字符(将其替换为\0),或使用长度为1。