如何从文本文件C中创建数组

时间:2011-10-16 15:34:21

标签: c arrays file getc

我收到了包含以下信息的文本文件:(100; 200;第一个)。任何人都可以告诉我如何将这些信息分成三个数组: Min = 100,Max = 200和Name =第一即可。我试过这个

C = GETC(INP);

I =的atoi(szinput);

但它首次读取10,第二次读取00 ...依次循环

c保存10而不是1,所以我无法获得数组的正确信息......

所以阵列Min存储1000而不是100

感谢。

4 个答案:

答案 0 :(得分:2)

像这样使用scanffscanf

scanf("(%d;%d;%[^)])",&min,&max,str);

答案 1 :(得分:0)

以下是cool, simple tutorial如何做到这一点。

请注意,您需要稍微调整一下示例,但这不应该太难。

你也可以尝试找一个能完成这项工作的库,我相信C有很多这样的库:)

答案 2 :(得分:0)

您可以执行以下操作

FILE *file;
char readBuffer[40];
int c;
file = fopen("your_file","r");
while ((c=getc(file))!= EOF)
{
    strcat(readBuffer, c);
    if( (char) c == ';')
  //this is the delimiter. Your min, max, name code goes here

}
   fclose(file);

答案 3 :(得分:0)

使用strtok()

#include <stdio.h>
#include <string.h>

int main() { 
  char input[] = "100;200;first";
  char name[10];
  int min, max;

  char* result = NULL;
  char delims[] = ";";

  result = strtok(input, delims);
  // atoi() converts ascii to integer.
  min = atoi(result);
  result = strtok(NULL, delims);
  max = atoi(result);
  result = strtok(NULL, delims);
  strcpy(name, result);
  printf("Min=%d, Max=%d, Name=%s\n", min, max, name);
}

输出:

Min=100, Max=200, Name=first
相关问题