文件输入输出:为什么我打的代码和书上运行结果不一样?

时间:2023-01-19 21:13:54
这一章我没理解,只能无限次的看书,打代码,可是运行结果和书上的不一样。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LEN 40
int main(int argc,char *argv[])\\这里的argc是不是指文件内容,*argv[]是指文件?
{
FILE *in, *out;
int ch;
char name[LEN];
int count=0;

if(argc<2)\\这个代码所指的文件在哪啊?是对哪个文件进行操作?
{
fprintf(stderr,"Usage:%s filename\n",argv[0]);
exit(1);
}

if((in=fopen(argv[1],"r"))==NULL)
{
fprintf(stderr,"I couldn't open the file.\"%s\"\n",argv[1]);
exit(2);
}

strcpy(name,argv[1]);
strcat(name,".red");
if((out=fopen(name,"w"))==NULL)
{
fprintf(stderr,"Can't create output file.\n");
exit(3);
}

if(fclose(in)!=0||fclose(out)!=0)
fprintf(stderr,"Error in closing files\n");
return 0;
}

书上运行这个文件后,可以直接输入文本。而我运行后只有指向这个代码存在的路径(e:\program\……\lizi\reducto.c,然后就是press any key to continue。为什么?

7 个解决方案

#1


1. argc 是命令行中参数的个数,argv[i] 对应每一个参数
举例:比如在命令行中输入:"D:\AAA.exe 10 20"
那么:
argc = 3; 
argv[0] = "D:\AAA.exe";
argv[1] = 10;
argv[2] = 20;
不知道上面的回答是否符合你的解答。

#2


原来是这样的呀。。。书上根本没说main函数里参数的作用。。

但是这个代码运行为什么和书上的不一样呢?帮忙运行下啊。。

#3


引用 2 楼 Bzy_NET 的回复:
原来是这样的呀。。。书上根本没说main函数里参数的作用。。

但是这个代码运行为什么和书上的不一样呢?帮忙运行下啊。。

你运行的时候需要给出参数,第二个参数就是要打开的那个文件名

#4


书上怎么搞的,不用太较真,可能是由于操作环境、手法不一致会导致结果多样化。
理解你的每行代码的意思最重要,把你上面的35行代码理解透彻了,你就不会再纠结这个问题了。
比如:在第12行下个断点,然后在程序的路径新建个文件如data.txt,然后按照我上楼给您的解释结合程序,调试下,argc 是不是小于12?程序在哪行退出?程序输出了什么?等等一系列疑问都会引刃而解。
呵呵。祝你好运!

#5


对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

#6


问题解决了,原来是上机操作的问题:
代码写好了,原来在debug里面产生了一个.exe文件,点开这个文件才能输入,不能通过ctrl+f5直接运行。

谢谢你们,你们根本不知道一个人自学C会遇到什么困难。。

#7


引用 6 楼 Bzy_NET 的回复:
问题解决了,原来是上机操作的问题:
代码写好了,原来在debug里面产生了一个.exe文件,点开这个文件才能输入,不能通过ctrl+f5直接运行。

谢谢你们,你们根本不知道一个人自学C会遇到什么困难。。

解决了就好,你的自学c语言让我很感动,很多人就是有人教都不想学,而你还是自学,钦佩下!
以后有什么问题,大家可以一起讨论,互相学习,互相进步。

#1


1. argc 是命令行中参数的个数,argv[i] 对应每一个参数
举例:比如在命令行中输入:"D:\AAA.exe 10 20"
那么:
argc = 3; 
argv[0] = "D:\AAA.exe";
argv[1] = 10;
argv[2] = 20;
不知道上面的回答是否符合你的解答。

#2


原来是这样的呀。。。书上根本没说main函数里参数的作用。。

但是这个代码运行为什么和书上的不一样呢?帮忙运行下啊。。

#3


引用 2 楼 Bzy_NET 的回复:
原来是这样的呀。。。书上根本没说main函数里参数的作用。。

但是这个代码运行为什么和书上的不一样呢?帮忙运行下啊。。

你运行的时候需要给出参数,第二个参数就是要打开的那个文件名

#4


书上怎么搞的,不用太较真,可能是由于操作环境、手法不一致会导致结果多样化。
理解你的每行代码的意思最重要,把你上面的35行代码理解透彻了,你就不会再纠结这个问题了。
比如:在第12行下个断点,然后在程序的路径新建个文件如data.txt,然后按照我上楼给您的解释结合程序,调试下,argc 是不是小于12?程序在哪行退出?程序输出了什么?等等一系列疑问都会引刃而解。
呵呵。祝你好运!

#5


对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!

不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

#6


问题解决了,原来是上机操作的问题:
代码写好了,原来在debug里面产生了一个.exe文件,点开这个文件才能输入,不能通过ctrl+f5直接运行。

谢谢你们,你们根本不知道一个人自学C会遇到什么困难。。

#7


引用 6 楼 Bzy_NET 的回复:
问题解决了,原来是上机操作的问题:
代码写好了,原来在debug里面产生了一个.exe文件,点开这个文件才能输入,不能通过ctrl+f5直接运行。

谢谢你们,你们根本不知道一个人自学C会遇到什么困难。。

解决了就好,你的自学c语言让我很感动,很多人就是有人教都不想学,而你还是自学,钦佩下!
以后有什么问题,大家可以一起讨论,互相学习,互相进步。