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