返回信息流虽然难以置信,但是居然直接在main函数读参时候报错,argc和argv都被判定为不可读取的非法地址了,这到底是哪里的问题???
这是一条镜像帖。来源:北邮人论坛 / cpp / #87012同步于 2015/5/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
究竟什么情况下会造成main函数读取参数失败??
RPGViewer
2015/5/9镜像同步16 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 RPGViewer 的大作中提到: 】
: 虽然难以置信,但是居然直接在main函数读参时候报错,argc和argv都被判定为不可读取的非法地址了,这到底是哪里的问题???
贴代码吧。
来自「北邮人论坛手机版」
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10000000
int comp(const void * x, const void * y) {
return *(int *)x - *(int *)y;
}
int main(int argc, char **argv) {
FILE* fp = fopen(argv[1], "r");
if (fp == NULL) {
printf("Can't open %s.\n", argv[1]);
return -1;
}
int arr[N];
memset(arr, 0, sizeof(arr));
int tmp, idx = 0;
while(fscanf(fp, "%d\n", &tmp) != EOF)
arr[idx++] = tmp;
fclose(fp);
qsort(arr, idx, sizeof(arr[0]), comp);
fp = fopen(argv[2], "w");
if (fp == NULL) {
printf("Can't open %s.\n", argv[2]);
return -1;
}
int i;
for (i = 0; i < idx; i++)
fprintf(fp, "%d\n", arr[i]);
fclose(fp);
return 0;
}
【 在 nuanyangyang 的大作中提到: 】
: 贴代码吧。
: 来自「北邮人论坛手机版」
你在命令行里是怎么启动这个程序的呢?贴整个命令。
然后,你的输入文件的内容呢?
运行时出了什么问题呢?
【 在 RPGViewer 的大作中提到: 】
: #include <stdio.h>
: #include <stdlib.h>
: #include <string.h>
: ...................
来自「北邮人论坛手机版」
启动命令:./a.out input output
input文件就是每行一个数字的文本文件
output是输出的文件,输出时创建
一运行就崩溃,gdb调试发现在进main函数时候显示argc和argv地址非法无法访问,然后立刻崩溃。
【 在 nuanyangyang 的大作中提到: 】
: 你在命令行里是怎么启动这个程序的呢?贴整个命令。
: 然后,你的输入文件的内容呢?
: 运行时出了什么问题呢?
: ...................
你是怎么编译的呢?
【 在 RPGViewer 的大作中提到: 】
: 启动命令:./a.out input output
: input文件就是每行一个数字的文本文件
: output是输出的文件,输出时创建
: ...................
来自「北邮人论坛手机版」
...只是个实验性的小程序,还真没考虑这里,一直卡在main函数入口orz
【 在 nuanyangyang 的大作中提到: 】
: 另外你在栈上分配了40MB的数组真的没问题吗?
: 来自「北邮人论坛手机版」