C语言从txt文本中读取多行用逗号分隔的数据

例如数据为:
0.5712,0.45356,0.74399
0.58775,0.4721,0.77793
0.51964,0.42228,0.69693
将每一列的数据保存在一个double型数组中。
解决方案:
1.利用fscanf()函数:

#include <stdio.h>
#include<stdlib.h>

int main()
{
    FILE *fp = fopen("C://Users//aoe//Desktop//2016.920//796-40//clo.txt", "r");
    if (fp == NULL)
    {
        printf("file open error\n");
        return -1;
    }

    double xx[3];
    double yy[3];
    double zz[3];

    for (int i = 0; i < 3; i++)
    {
        fscanf(fp, "%lf,%lf,%lf", &xx[i], &yy[i], &zz[i]);
        printf("%lf,%lf,%lf\n", xx[i], yy[i], zz[i]);
    }
    fclose(fp);
    system(
  • 7
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 fscanf 函数读取文件逗号隔开数字,并将其存储到数组。具体实现方法如下: ```c #include <stdio.h> #define MAX_SIZE 100 int main() { FILE *fp; // 文件指针 int arr[MAX_SIZE]; // 存储数字的数组 int i = 0; // 计数器 // 打开文件,如果文件打开失败则返回 fp = fopen("data.txt", "r"); if (fp == NULL) { printf("Failed to open file.\n"); return -1; } // 读取文件数字,以逗号分隔符 while (fscanf(fp, "%d,", &arr[i]) != EOF && i < MAX_SIZE) { i++; } // 输出读取到的数字 printf("Read %d numbers from file:\n", i); for (int j = 0; j < i; j++) { printf("%d ", arr[j]); } printf("\n"); // 关闭文件 fclose(fp); return 0; } ``` 这个程序打开了名为 "data.txt" 的文件,并从文件读取逗号隔开数字。它将读取到的数字存储到数组,并输出数组存储的数字。需要注意的是,这个程序最多只能读取 100 个数字,因为我们在定义数组时指定了数组的最大长度为 100。如果文件数字超过了 100 个,程序只会读取前 100 个数字。 ### 回答2: 要在C语言文件读取逗号分隔数字,并将其存储在数组,你可以遵循以下步骤: 1. 打开要读取文件,使用`fopen`函数。例如:`FILE* file = fopen("filename.txt", "r");` 2. 定义一个足够大的数组来存储读取到的数字。例如:`int array[100];` 3. 使用`fscanf`函数从文件读取数字。`fscanf`函数的第一个参数是文件指针,第二个参数是读取格式,第三个参数是要读取的变量。在这种情况下,你需要使用`"%d,%*c"`读取一个整数,然后逗号后面的字符将被忽略。使用一个循环可以读取所有的数字。例如: ```c int i = 0; while(fscanf(file, "%d,%*c", &array[i]) != EOF) { i++; } ``` 4. 关闭文件,使用`fclose`函数。例如:`fclose(file);` 5. 数组`array`现在包含了从文件读取逗号分隔数字。 请注意,上述代码假设文件数据格式是正确的,即数字之间是用逗号隔开的,且每个数字都能被解释为整数。在实际应用,你可能需要添加一些错误处理的代码来确保程序的稳定性。 ### 回答3: 要使用C语言文件读取逗号分隔数字,并将其存储在数组,可以按照以下步骤进行: 1. 打开文件:首先,使用C语言文件操作函数打开要读取文件。例如,使用fopen函数打开文件并返回一个指向文件的指针。 2. 读取数据:使用fgets函数从文件逐行读取数据。将每行数据存储在一个字符串变量。 3. 分割数据:使用strtok函数将每行数据分割为逗号分隔数字。使用逗号作为分隔符调用strtok函数,并将每个切割的数字存储在一个临时数组。 4. 转换数据类型:将字符串形式的数字转换为int类型或float类型,取决于你希望存储的数字类型。可以使用atoi函数将字符串转换为整数,使用atof函数将字符串转换为浮点数。 5. 存储数据:将转换后的数字存储在一个数组。在每次循环读取到一个数字时,将其存储在数组的适当位置上。 6. 关闭文件:使用fclose函数关闭打开的文件。 下面是一个简单的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LINE_LENGTH 100 int main() { FILE* file = fopen("data.txt", "r"); if (file == NULL) { printf("无法打开文件\n"); return 0; } char line[MAX_LINE_LENGTH]; char* token; int numbers[MAX_LINE_LENGTH]; int count = 0; while (fgets(line, sizeof(line), file) != NULL) { token = strtok(line, ","); while (token != NULL) { numbers[count] = atoi(token); count++; token = strtok(NULL, ","); } } fclose(file); printf("读取到的数字:"); for (int i = 0; i < count; i++) { printf("%d ", numbers[i]); } printf("\n"); return 0; } ``` 以上代码打开名为"data.txt"的文件,每行以逗号分隔数字会被读取并存储在名为"numbers"的整数数组。最后,代码将打印存储在数组数字。请确保文件的每个数字都以逗号分隔,并且文件的每行不超过MAX_LINE_LENGTH指定的长度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值