第一个没问题,可以通过编译(TC2.0),也能正确读"d:\1.txt"的文件
第二个有点问题,可以编译,但无法读取输入的文件名.
提示:null pointer assignment
输入的是d:\1.txt,当然,前提是d:\1.txt存在.
如果输入d:\\1.txt,则打开错误
如何才能把第二个也做好?
小弟刚开始学C的,我已经想了蛮久了,不明白.指点一下是什么回事,谢谢了啦!!!
#include<stdio.h>
main()
{
FILE *fp;
char ch;
if((fp=fopen("d:\\1.txt","rt"))==NULL)
{
printf("Can not open file strike any key exit!");
getch();
exit(1);
}
ch=fgetc(fp);
while (ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
#include<stdio.h>
main()
{
char fname[80];
char ch;
FILE *fp;
printf("\nPlease input the file path:\n");
gets(fname);
if(fp=(fopen(fname,"r"))==NULL)
{
printf("file %s can't opened\n",fname);
exit(0);
}
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
----------------解决方案--------------------------------------------------------
是不是\\的问题?
----------------解决方案--------------------------------------------------------
如我所说
输入:d:\1.txt 显示:null pointer assignment
输入d:\\1.txt 显示:file d:\\1.txt can't opened!
请大家指点一下,到底是程序有误,还是我输入有问题?
[此贴子已经被作者于2007-9-30 1:01:24编辑过]
----------------解决方案--------------------------------------------------------
我想是gets(fname);这句的问题.
输入之后,指针指向了d:\1.txt 的后边.你看看是不是这个问题.
----------------解决方案--------------------------------------------------------
gets(fname);是输入文件名.那还要加什么东东,才能正确打开输入的文件名?
我找过谭的C也没有类似例题.要么就是打开指定文件(在源码中已经写好路径,就像上面的第一个),要么就是输入文件名,再输入文件内容,最后显示.都不太一样啊.急切想知道到底应该怎么做啊.
----------------解决方案--------------------------------------------------------
浅色的回忆,谢谢你了.我知道是怎么回事了
#include<stdio.h>
main()
{
char fname[80];
char ch;
FILE *fp;
printf("\nPlease input the file path:\n");
gets(fname);
if((fp=fopen(fname,"r"))==NULL) /*问题出在这,晕.括号打错了.看来以后得小心才行啊.*/
{
printf("file %s can't opened\n",fname);
exit(0);
}
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
}
----------------解决方案--------------------------------------------------------