悟坑 发表于 2021-9-14 10:51:47

为什么用读取文件出现 0xC0000005: 写入位置 0x00000015 时发生访问冲突vs2019

#include <stdio.h>
int main()
{
        int data;
        FILE* fp = NULL;
        fopen_s(&fp,"in.txt", "rt");
        if (!fp)
        {
                printf("can't open file\n");
                return -1;
        }
        while (!feof(fp))
        {
                fscanf_s(&fp, "%d", &data);   //该行便是出现问题的地方
                printf("%4d", data);
        }
        printf("\n");
        fclose(fp);
        return 0;
}

jhq999 发表于 2021-9-14 11:25:31

本帖最后由 jhq999 于 2021-9-14 11:27 编辑

步子太大扯着蛋了。
fscanf_s(fp, "%c", (char*)&data+3);//该行便是出现问题的地方
                int i=1;
      while (!feof(fp))
      {
                        fscanf_s(fp, "%c", (char*)&data+3-i%4);
                        if (3==(i%4))
                        {
                                  //该行便是出现问题的地方
                printf("%x", data);
                        }
             i++;   
      }

jhq999 发表于 2021-9-14 11:39:20

fseek(fp,0 ,SEEK_END);
int len=ftell(fp);
fseek(fp,0 ,SEEK_SET);

2736946915 发表于 2021-9-14 11:45:50

    fscanf_s(&fp, "%d", &data);   //该行便是出现问题的地方

你告诉我这是啥?FILE* fp = NULL;是一个指针,
那么指针你为什么还要取它地址(“&”)??直接把fp填进去不就得了,
fscanf_s(fp, "%d", &data)这样应该就行

悟坑 发表于 2021-9-14 12:27:16

2736946915 发表于 2021-9-14 11:45
fscanf_s(&fp, "%d", &data);   //该行便是出现问题的地方

你告诉我这是啥?FILE* fp = NULL;是一 ...

我最开始没取址,但是会报错,填了以后这部分不报错,但是还是会出现上述问题

jhanker 发表于 2021-9-14 14:32:34

学习文件操作,也可以看看
https://fishc.com.cn/thread-173037-1-1.html
里面有这方面的代码
好久没接触代码,感觉有点忘了

2736946915 发表于 2021-9-14 20:17:26

悟坑 发表于 2021-9-14 12:27
我最开始没取址,但是会报错,填了以后这部分不报错,但是还是会出现上述问题

看图VS2019;
页: [1]
查看完整版本: 为什么用读取文件出现 0xC0000005: 写入位置 0x00000015 时发生访问冲突vs2019