【发布时间】:2017-05-02 13:44:06
【问题描述】:
我正在尝试创建一个文件并通过命令行打印一系列整数。基本上我想要的是argv[1] 是第一个打印的数字,argv[2] 是最后一个打印的数字,以及介于两者之间的系列。 argv[3] 将是文件的名称。我的代码如下所示,如果有人能指出任何错误,那就太好了。假设这个例子接收到的参数总是四个。第一次使用文件功能,所以对于任何非常简单的错误,我深表歉意。接收到非法数组,指针错误。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int array[100];
int first, last, c;
first=atoi(argv[1]);
last=atoi(argv[2]);
c=last-first;
for (int a=0; a<c; a++) {
array[a]=first+a;
}
FILE *fp;
fp = fopen(argv[3], "w");
if (fp == NULL) {
for (int i=0; i<last; i++) {
fprintf(fp, "%d\n", array[i]);
}
}
fclose(fp);
return 0;
}
我的输入如下所示。
./number.c 20 25 5.txt
我输入 cat "file_name.txt" 时的预期输出如下所示。
cat number.c
20
21
22
23
24
25
但我收到的输出是
ASAN:DEADLY SIGNAL
runtime error-illegal array, pointer or other operation
编辑:问题已解决。
【问题讨论】:
-
哇,对不起。甚至没有意识到有这样的网站。下次我一定会提到哪里出了问题。
-
提示:当有 I/O 的代码出现问题时,发布使用的输入、看到的输出和预期的输出。
-
@Toby 这个问题与代码审查无关,将在那里结束。阅读散文的最后一句话,以及代码审查帮助中心。
-
@Toby 哦,哎呀,是的。我没有看时间戳。不过,我的评论(除了指责您没有阅读问题的那一点)目前是正确的;您可以删除您的以防止混淆吗?