C语言从文件中读取多行用逗号分隔数据的解决方案

123456659,24666666,45461221,46465333,
123456659,24666666,45461221,46465333,
123456659,24666666,45461221,46465333,
例如数据如上,由于是用逗号分隔,所以要解决去掉逗号的问题。

第一种方法:用fgets函数从文件中读取数据,fgets读取数据时以回车或者EOF结束,读取一行后保存在数组中,然后判断是否为逗号,采取相应处理。

#include <stdio.h>
#include <string.h>
int main()
{
 int i,j=0,k;
 FILE *fp=fopen("d://hh.txt","r");
 if(fp==NULL)
 {
  printf("file open error/n");
  return -1;
 }
 char buf[46];
 char str[13];
 memset(str,0,sizeof(str));
 memset(buf,0,sizeof(buf));
 while(!feof(fp))
 {
  fgets(buf,sizeof(buf),fp);
  for(i=0;buf[i];i++)
  {
   if(buf[i]!=',')
   {
    str[j]=buf[i];
    j++;
   }
   else if(buf[i]==',')
   {
    printf("%s/n",str);
        memset(str,0,sizeof(str));
    j=0;
   }
  }
  memset(buf,0,sizeof(buf));
 }
 fclose(fp);
 return 0;
}
第二种方法:利用fscanf的格式可以用正则表达式来实现,思路简单

#include <stdio.h>
int main()
{
  FILE *fp=fopen("d://hh.txt","r");
  if(fp==NULL)
  {
  printf("file open error/n");
  return -1;
  }
  char str[11];
  char ch;
  int i=0,count=0;
  fscanf(fp,"%[^,]%*c",str);
  printf("%10s/n",str);
  while(!feof(fp))
  {
  fscanf(fp,"%[^,]%*c",str);
  printf("%10s/n",str);
  }
  fclose(fp);
  system("pause");
  return 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、付费专栏及课程。

余额充值