繁体   English   中英

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

[英]Why do I get an empty newline with fgets()

    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
....

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM