代码农民 发表于 2016-11-15 11:51:16

C语言中文件操作

本帖最后由 代码农民 于 2016-11-15 16:10 编辑

我在F盘新建了2个文件,路径是“F:\Code\a.txt”和 “F:\Code\b.txt",

a中的内容:

b中什么都没写。

然后我写了个代码:
#include <stdio.h>
void
main()
{
        FILE *p1,*p2;
        int a;
        char* b;

        p1=fopen("F:\Code\a.txt","r");
        fscanf(p1,"%d%s",&a,b);
        fclose(p1);
        p2=fopen("F:\Code\b.txt","a+");
        fprintf(p2,"%d%s",a,b);
        fclose(p2);
}

我的本意是把a里的内容复制到b里,但是程序一直出错,为什么?

人造人 发表于 2016-11-15 12:23:08

本帖最后由 人造人 于 2016-11-15 12:24 编辑

告诉我,双引号中的反斜杠是什么意思?
"F:\Code\a.txt"
http://blog.163.com/sunshine_linting/blog/static/44893323201181325818165/

代码农民 发表于 2016-11-15 12:33:13

人造人 发表于 2016-11-15 12:23
告诉我,双引号中的反斜杠是什么意思?
"F:\Code\a.txt"
http://blog.163.com/sunshine_linting/blog/sta ...

我改成了“"F:\\Code\\a.txt"这样也不行啊....函数原型里不是文件名吗?..

代码农民 发表于 2016-11-15 12:38:10

人造人 发表于 2016-11-15 12:23
告诉我,双引号中的反斜杠是什么意思?
"F:\Code\a.txt"
http://blog.163.com/sunshine_linting/blog/sta ...

求告知该怎么写?..

人造人 发表于 2016-11-15 12:54:46

代码农民 发表于 2016-11-15 12:33
我改成了“"F:\\Code\\a.txt"这样也不行啊....函数原型里不是文件名吗?..

"F:\\Code\\a.txt"
这样不行吗?
fopen的第一个参数的确是文件名
可是"F:\Code\a.txt" 不是文件名啊(不是C语言中的文件名)

代码农民 发表于 2016-11-15 13:01:47

人造人 发表于 2016-11-15 12:54
"F:\\Code\\a.txt"
这样不行吗?
fopen的第一个参数的确是文件名


恩..确实不行...
我也不知道该怎么弄了...

#include <stdio.h>
void
main()
{
      FILE *p1,*p2;
      int a;
      char* b;

      p1=fopen("F:\\Code\\a.txt","r");
      fscanf(p1,"%d%s",&a,b);
      fclose(p1);
      p2=fopen("F:\\Code\\b.txt","a+");
      fprintf(p2,"%d%s",a,b);
      fclose(p2);
}

人造人 发表于 2016-11-15 13:05:41

代码农民 发表于 2016-11-15 13:01
恩..确实不行...
我也不知道该怎么弄了...


#include <stdio.h>
void
main()
{
        FILE *p1, *p2;
        int a;
        char* b;

        p1 = fopen("F:\\Code\\a.txt", "r");
        if(p1 == NULL)
        {
                printf("打不开");
                getchar();
        }

        fscanf(p1, "%d%s", &a, b);
        fclose(p1);
        p2 = fopen("F:\\Code\\b.txt", "a+");
        fprintf(p2, "%d%s", a, b);
        fclose(p2);
}

很有可能是打不开文件,试试这个

人造人 发表于 2016-11-15 13:09:52


#include <stdio.h>
void
main()
{
        FILE *p1, *p2;
        int a;
        char b;

        p1 = fopen("F:\\Code\\a.txt", "r");
        if(p1 == NULL)
        {
                printf("打不开");
                getchar();
        }

        fscanf(p1, "%d%s", &a, &b);
        fclose(p1);
        p2 = fopen("F:\\Code\\b.txt", "a+");
        fprintf(p2, "%d%s", a, b);
        fclose(p2);
}

应该是你想要的结果了

代码农民 发表于 2016-11-15 13:09:53

人造人 发表于 2016-11-15 13:05
很有可能是打不开文件,试试这个

试了...结果跟我上面的一样....

代码农民 发表于 2016-11-15 13:14:14

人造人 发表于 2016-11-15 13:09
应该是你想要的结果了

谢谢...成功了..让我想想其中的原因..

代码农民 发表于 2016-11-15 13:40:59

人造人 发表于 2016-11-15 13:09
应该是你想要的结果了

想不明白..为什么数组就可以...字符指针就不行?
难到是指针相临的存储空间不让用么...

代码农民 发表于 2016-11-15 13:50:35

人造人 发表于 2016-11-15 13:09
应该是你想要的结果了

求告知为什么..

人造人 发表于 2016-11-15 17:47:59

代码农民 发表于 2016-11-15 13:40
想不明白..为什么数组就可以...字符指针就不行?
难到是指针相临的存储空间不让用么...

你应该知道指针是什么
http://bbs.fishc.com/forum.php?mod=viewthread&tid=71654&extra=page%3D1%26filter%3Dtypeid%26typeid%3D584
知道了指针是什么,这个问题根本就算不上是问题^_^

代码农民 发表于 2016-11-19 17:11:38

人造人 发表于 2016-11-15 17:47
你应该知道指针是什么
http://bbs.fishc.com/forum.php?mod=viewthread&tid=71654&extra=page%3D1%26fil ...

谢谢!
页: [1]
查看完整版本: C语言中文件操作