繁体   English   中英

C - 将反转的文件内容打印到标准输出

[英]C - print reversed file contents to stdout

我想读取文件的内容并打印其内容的反面。 仅使用 fopen、fgets、fputs、fclose。 这就是我所做的,但是没有打印任何内容。

#include <sys/types.h>                                                          
#include <sys/stat.h>                                                           
#include <sys/fcntl.h>                                                          
#include <unistd.h>                                                             
#include <stdio.h>                                                              

int main(int argc, char *argv[])                                                
{                                                                               
    if (argc != 2)                                                              
    {                                                                           
        return 1;                                                               
    }                                                                           
    FILE *f = fopen(argv[1], "r");                                              
    if (f == NULL)                                                              
    {                                                                           
        return 2;                                                               
    }                                                                           
    char buffer[4096];                                                          
    char reversed[4096];                                                        
    char *line = fgets(buffer, 50, f); //read 50 characters at a time                                   
    int length = 0;                                                             
    int j = 0;                                                                  
    while (line != NULL)        // while end of file not reached                                                 
    {                                                                           
        length = 0;                                                             
        j = 0;                                                                  
        for (char *temp = buffer; *temp != '\0'; temp++)    //find length of buffer                 
        {                                                                       
            length += 1;                                                        
        }                                                                       
        for (int i = length; i > 0; i--)          // reverse buffer                              
        {                                                                       
            reversed[j] = buffer[i];                                            
            j += 1;                                                             
        }                                                                       
        fputs(reversed, stdout);                                                
        line = fgets(buffer, 50, f);                                            
    }                                                                           
    fclose(f);                                                                  
    return 0;                                                                   
}

output:

(nothing)

例子:

abcdef
ghi

预期 output:

fedcba
ihg

您从错误的偏移量开始

for (int i = length; i > 0; i--)          // reverse buffer

切换到

for (int i = length - 1; i >= 0; i--)    // reverse buffer

否则,您交换/反转 NUL 终止符并获得一个空字符串

暂无
暂无

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

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