JOHN 发表于 2010-6-3 21:00:18

文件读取

main()
{
   char dd;
   FILE *fp;       //文件指针
   
   fp=fopen("h:\\tools\\fg.ini","r");//读取文件,r表示读取.
   while(!feof(fp))//当不为文件最后时
   {
      fscanf(fp,"%s",dd );//fscanf输入/读取文件内容
   
   printf("%s\n",dd);//打印 读取的内容
   }
   getch();   
      }
==============================================================
以上程序正常运行.

我想改成一个有提示的程序,就是自己输入路径+文件名 ,可是不成功,程序崩溃.main()
{
      char data;
      char * fname;
      FILE *fp;

      printf("pls input the file path and name!\n");
      scanf("%s",fname);
      printf("%s",fname);
      fp=fopen(fname,"r");
      while(!feof(fp))
       {
         fscanf(fp,"%s",data);
         printf("%s\n",data);
         
         fclose(fp);
         }
         getch();
}      是fopen那里错了吗?只能跟常量吗

武子 发表于 2010-8-8 01:13:04

第十行的那个r是干嘛的。。。


我记不清了。。。



不过,楼主愿意动脑筋,还是要表扬一下的。

tims 发表于 2010-8-28 18:12:36

很负责地告诉楼主、、您冤枉 fopen() 了、、、/:017

程序崩溃是因为楼主的fname没有开辟空间、、、、

tims 发表于 2010-8-28 18:26:26

又看了一下楼主的程序、、发现楼主太粗心了

fclose(fp) 应该放在while(){}循环的外面吧、、、、

否则楼主的程序就是死循环,并且只能读出文件中的第一个字符串

还有就是楼主在程序最后的 getch() 用法不对、、估计是通不过编译的

====================================================================

俺不理解程序的最后的那个 getch() 是干什么用的、、

希望楼主能告诉一下、、相互交流哈

tims 发表于 2010-8-28 18:33:07

第十行的那个r是干嘛的。。。


我记不清了。。。



不过,楼主愿意动脑筋,还是要表扬一下的。
武子 发表于 2010-8-8 01:13 https://www.chinapyg.com/images/common/back.gif


    ‘r’表示只读、、、就是对打开的文件只能读,不能写、、、

不知道我这样说的能不能被理解、、、

===============================================

‘w’表示写

'rb'    表示以二进制的形式打开文件并且只读

   'wb'表示以二进制的形式打开文件并且可写入

武子 发表于 2010-8-28 18:34:36

嗯,我想起来啦   r   


xiexie楼上的。

武子 发表于 2010-8-28 18:35:47

回复 4# tims


    getch()应该是为了读取一个空格吧。。。


防止程序一闪而过,,,没有界面。。。

tims 发表于 2010-8-28 20:01:45

回复 7# 武子


    我把 getch() 去掉了才能编译通过啊、、

我把它改成 getchar() 也能通过、、(楼主原意是要用这个吧?)

不过感觉加不加这一句没啥影响啊、、

我没出现一闪而过的情况、、、

是不是在 TC 中会出现这种情况啊(我没用过TC)、、

我用的是VC、重来没有一闪而过的时候、、
页: [1]
查看完整版本: 文件读取