C++ 如何读取常规文本文件?

C++ 如何读取常规文本文件?,c++,text,C++,Text,我正在尝试编写一个程序,该程序将打开一个常规类型的文件(二进制或文本/ASCII),读取文件中的每个字节,并将该字节的ASCII十六进制值及其可打印(人类可读)字符(字符、数字、符号)写入标准输出。我现在只是尝试让用户选择文件 #include <stdio.h> #include<stdlib.h> FILE *file; int main(int argc, char *argv[ ]){ int a; int modified = 1;//1 me

我正在尝试编写一个程序,该程序将打开一个常规类型的文件(二进制或文本/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;
                }
#包括
#包括
文件*文件;
int main(int argc,char*argv[]){
INTA;
int modified=1;//1表示未修改,0表示已修改
如果(argc>2){//写入std错误输出
返回25;
}
如果(argc==2){//如果有1个参数,请打开并读取它
file=fopen(argv[1],“rt”);
如果(file==NULL){//无法打开文件。返回错误代码15
fprintf(stderr,“无法打开文件%s\n错误代码15\n”,argv[1]);
返回15;
}
a=getc(文件);
}else//如果没有参数,则从stdin获取字符
a=getchar();
char*buffer=malloc(200);
int j=0;//缓冲区索引帮助器
而(a!=EOF){//则逐个字符读取,直到EOF
如果(j>200){
j=0;
//fprintf(stderr,“错误,缓冲区溢出。\n错误代码35\n”);//将错误发送到stderrl
//返回35;
}
不过,我有一些错误:

错误:从“void*”到“char*”的转换无效
xsd.cpp:30:错误:输入结束时应为“}”

xsd.cpp:30:错误:应为`}在输入端

> P>主要问题是C++中的C语言编写,C和C++是相似的,因为C++继承了C语言,但它们最终是不同的语言。例如,C++有一个更难、更严格的类型系统,所以你不能在C中的C.中使用像“代码>空洞*/CODE”这样的隐式转换成其他指针类型。++您必须将
void*
强制转换为正确的指针,例如

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

最好是不要在C++中编写C代码,使用C++函数,比如,/和类,比如字符串,等等。



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

你是在代码末尾缺少几个}}还是没有粘贴所有内容?我通常建议先修复第一条错误消息。但在这种情况下,请不要使用clos大括号是一个非常简单的错误,甚至在发布代码之前就应该修复。这些错误还不够清楚吗?只需阅读它们,然后一个接一个地处理它们。这个问题似乎离题了,因为它是关于实际阅读的。显然,他C&P了所有的程序:他的编译器错误证明了这一点。是的,我必须忘记}。耶稣…上次我在这里发帖。我还需要在char..thanx上免费施展。