啊啊啊啊好难 2023-07-10 19:57 采纳率: 92.9%
浏览 43
已结题

为什么我放入数组之后 输出结果为什么和文件里面的不一样呀😭


#include<stdio.h>
int main()
{
    FILE *fp=fopen("D:\\c\\data.txt.txt","r"); //打开一个已有文件,允许读取
    
    int arr[10];
    //int a=0;
    
    if(fp==NULL){
        
        return 0;
    }
    
    while(!feof(fp))
    {
        
        fgets(arr,10,fp);
        
    }//feof检查文件流是否读到了文件尾 (返回非零值代表达到文件尾) 
    
    int i;
    for(i=0;i<10;i++){
        printf("%d ",arr[i]);
    }
    fclose(fp);//关闭文件 
    return 0;
}

img

img

  • 写回答

4条回答 默认 最新

  • Lee哈 前端领域新星创作者 2023-07-10 21:15
    关注

    看看我给你改的:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    {
        FILE *fp = fopen("D:\\c\\data.txt", "r");
        
        int arr[10];
        char line[256];
        
        if (fp == NULL)
        {
            printf("打开文件失败\n");
            return 0;
        }
        
        if (fgets(line, sizeof(line), fp) != NULL)
        {
            int i = 0;
            char *token = strtok(line, ",");
            while (token != NULL && i < 10)
            {
                arr[i++] = atoi(token);
                token = strtok(NULL, ",");
            }
            
            int j;
            for (j = 0; j < i; j++)
            {
                printf("%d ", arr[j]);
            }
        }
        
        fclose(fp);
        return 0;
    }
    

    你遇到的问题是因为fgets函数用于读取文本行时,它是按字符读取的,而不是将整行数据直接存入数组的。fgets函数的第一个参数应该是指向字符数组的指针,而你将整型数组arr的指针传入了fgets函数。
    如果你想一次读取整行数据并将其存储到整型数组中,可以使用fscanf函数,它可以按特定的格式读取数据。下面是使用fscanf读取整行数据的代码:

    #include <stdio.h>
    
    int main()
    {
        FILE *fp = fopen("D:\\c\\data.txt", "r");
        
        if (fp == NULL)
        {
            printf("打开文件失败\n");
            return 0;
        }
        
        int arr[10];
        int i = 0;
        
        while (fscanf(fp, "%d,", &arr[i]) == 1)
        {
            i++;
            if (i >= 10break;
        }
        
        fclose(fp);
        
        int j;
        for (j = 0; j < i; j++)
        {
            printf("%d ", arr[j]);
        }
        
        return 0;
    }
    

    这是运行结果图:

    img


    如果我的回答对你有帮助,能否给我一个采纳谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月11日
  • 已采纳回答 7月10日
  • 创建了问题 7月10日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表