【问题标题】:How to read a regular text file?如何读取常规文本文件?
【发布时间】:2014-09-12 22:55:45
【问题描述】:

我正在尝试编写一个程序将打开一个常规类型文件(二进制或文本/ASCII,读取文件中的每个字节并写入该字节的 ASCII 十六进制值以及它的可打印(人类可读)字符(字符、数字、符号)到标准输出。我现在只是想让用户选择文件。

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

FILE *file;
int main(int argc, char *argv[ ]){
    int a;
    int modified = 1;//1 means unmodified, 0 means modified
    if(argc > 2){//writes to std error output
        return 25;
     }
    if(argc == 2){// if there is 1 argument open it and read it
        file = fopen(argv[1], "rt");
        if(file == NULL){//cant open file. return error code 15
            fprintf(stderr, "cant opent file %s \nerror code 15 \n", argv[1]);
            return 15;
        }
        a = getc(file);
    }else// get characters from stdin if no arguments
        a = getchar();


    char *buffer = malloc(200);
    int j = 0;// buffer index helper

    while( a != EOF){//reads character by character until EOF
              if(j  > 200){
                    j =0;
              //      fprintf(stderr,"error error, buffer overflow. \n error code 35 \n"); // send error to stderrl
              //      return 35;
                }

但我遇到了错误:

error: invalid conversion from `void*' to `char*' xsd.cpp:30: error: expected `}' at end of input xsd.cpp:30: error: expected `}' at end of input

【问题讨论】:

  • 您是否在代码末尾缺少几个 } } 或者您只是没有粘贴所有内容?
  • 我通常建议先修复第一条错误消息。但在这种情况下,省略右括号是一个非常简单的错误,甚至应该在发布代码之前修复。
  • 这些错误还不够清楚吗?只需阅读它们,然后一个接一个地处理它们。
  • 这个问题似乎是题外话,因为它是关于实际阅读的。

标签: c++ text


【解决方案1】:

主要问题是您在 C++ 程序中编写 C。由于 C++ 继承自 C,C 和 C++ 相似,但它们最终是不同的语言。例如,C++ 有一个更难的类型系统,所以你不能例如像在 C 中一样,将 void * 隐式转换为其他指针类型。在 C++ 中,您必须将 void * 转换为正确的指针,例如

char *buffer = reinterpret_cast<char*>(malloc(200));

最好不要用 C++ 编写 C 代码,而是使用 C++ 功能,如 new/deleteC++ input/output library,以及像 std::string 这样的类用于字符串等。


那么问题当然是你在程序末尾没有足够的右大括号}。你没有复制粘贴所有的程序吗?

【讨论】:

  • 显然他 C&P 了他的所有程序:他的编译器错误证明了这一点。
  • 是的,我一定忘记了}。耶稣..上次我在这里发帖。我还需要在 char..thanx 上强制转换。
猜你喜欢
  • 2014-12-07
  • 1970-01-01
  • 2019-04-30
  • 2013-01-04
  • 1970-01-01
  • 2011-02-16
  • 2021-10-03
相关资源
最近更新 更多