我是C和C ++的新手,我的代码中有一个错误,我无法找到答案,因为当我发现一个答案时,更多决定浮出水面。这是我的代码:
#include <stdio.h> /* required for file operations */
FILE *file;
int main(void)
{
double content;
char *mode = "rt";
int x = 1;
const char *line();
int lineInt = 1;
const char *y;
double data[1000];
int i;
double filename;
if(x = 1)
{
scanf("%s", filename);
file = fopen(&filename, mode);
if (file == NULL)
{
fprintf(stderr, "Can't open input file!\n");
exit(1);
}
while (fgets (&line, 1000, file) != NULL);
{
lineInt == line;
scanf(&line, "string", &data[lineInt]);
line == line + 1;
}
fclose(file); /* close the file prior to exiting the routine */
for(i=1; i < line; i++);
{
printf("&d", data[i]);
}
fprint();
}
return 0;
}
我收到错误“Id返回1退出状态”。我在网上看过很多来源,但仍然无法找到答案,请帮忙。
答案 0 :(得分:1)
有很多错误。我将列出一些(参见评论):
double filename;
错了。使用char filename[256];
const char *line();
错了。使用char line[1000];
if (x=1)
这会将{1}分配给x
。使用if (x==1)
while (fgets (&line, 1000, file) != NULL)
{
lineInt == line;
scanf(&line, "string", &data[lineInt]);
line == line + 1;
}
fclose(file); /* close the file prior to exiting the routine */
您使用line
有两个不同的目的:使用stdin
从scanf
读取并使用fgets
从文件中读取。并按照WeatherVane的说法删除;
。而且scanf调用是垃圾。阅读手册!
for(i=1; i < line; i++);
数组索引从0开始,而不是1。
printf("&d"...
错了。使用"%d"
。
fprint();
是错误的。你的程序可能会崩溃。
所以你的代码的每一行都有一些错误。请阅读关于C的书。并在编译期间打开所有警告。你会得到很多。