在桌面上有一个名为“C.txt”的文本文档,里面有两列数据,一共2124行,也就是一行存放一个点的坐标,第一个是X第二个是Y,我想在C++中直接从文档中读入这些数据,用X[i],Y[i]来存放每一个点的横纵坐标的数据,请问给出源代码。最后还要在另一个名为“output.txt”的文档中输出一个整形数组P[m],一个单精度型变量t,和另一个整形数组d[m],请给出源代码,谢谢!
请问你现在在线吗?有几步看不懂,需要问一下,最好加个注释啥的,非常感谢,一定追加分(虽然这显得很什么)谢谢,谢谢!
追答哪里看不懂?
我没法修改了,加不上注释。哪行不懂,你问我答。
fscanf 返回成功读取的变量数
sizeof(array)/sizeof(array[0]) 是求数组元素数目,因为每个元素占内存相同。
能加一下QQ吗?
追答我不上Q. 你在这里问好了,回答完我去吃饭。
追问in = fopen("C.txt", "r");//不需要指明路径吗?
if(!in) return 1;//什么意思?
while(fscanf(in, "%d%d", X+lines, Y+lines) == 2)//==2是啥意思?
//printf("%d %d\n", X[lines], Y[lines]);这句怎么被注释了?
out = fopen("output.txt", "w");//不需要指明输出路径吗?
fprintf(out, "%d\n", d[i]);//对于d数组跟p数组来说我希望输出格式是一个数据空一个格而不是换行
in = fopen("C.txt", "r");//不需要指明路径吗?
//问得好,为了在任意目录运行,需要指明绝对路径。这里用得相对路径,把程序放到桌面才能正确运行.
if(!in) return 1;//什么意思?
//错误处理。打开文件失败则退出,你可以忽略。
while(fscanf(in, "%d%d", X+lines, Y+lines) == 2)//==2是啥意思?
// == 2 表示 X Y两个坐标值都能正确读取, 如果不是2则遇到非法数据或文件尾。
//printf("%d %d\n", X[lines], Y[lines]);这句怎么被注释了?
//这句调试用,可以不注释,你随意。
out = fopen("output.txt", "w");//不需要指明输出路径吗?
//同第一个fopen, 不指出输出路径会输出到当前工作路径。指明绝对路径(如"C:\\xxx\\output.txt")更好。
fprintf(out, "%d\n", d[i]);//对于d数组跟p数组来说我希望输出格式是一个数据空一个格而不是换行
//那就改成空格 fprintf(out, "%d ", d[i]);
真的非常感谢!第一次用C++解决实际问题就遇到了规模如此庞大的数据,我现在正在调试程序,在这个过程中有可能会产生疑问,到时候想直接在这里问你,今晚必须把程序拿出来,分一定会给!请放心!至少追加50.今天遇到好人加牛人了,要是我身边有你这样的同学就好了!最后再次表示感谢!
追答客气了。没问题,晚上回来时我会看看你的疑问。
追问两个问题:
1、如果得到的数据中我只想输出m个数据,能不能这样改写:
for(i = 0; i < mi++)
fprintf(out, "%d\n", P[i]);
2、单独运行你给我的这段代码没错,但是拿到我的程序中就出了这样的错误:
error C2562: 'main' : 'void' function returning a value
(错误指向了:if(!in) return 1;
if(!out) return 1;
return 0;
)这三句,我把这三句就去掉了……
1. 可以. 你m后少了分号.
2. 你的man函数定义声明为void, 直接return. return 1 和 return 0都改成return.
能留一个平时经常用的邮箱什么的吗?你匿名回答我以后遇到编程问题了一时半会儿也联系不上你。如果不方便就不要了,非常感谢!
请说详细点,还有,那输出怎么办呢?谢谢!
嗯,对matlab不太熟悉嘛,就直接上C++了,结果一下子就来了10页!人生第一次编这么大型的程序啊。