как сделать массивы из текстового файла C - PullRequest
1 голос
/ 16 октября 2011

Я получил текстовый файл с информацией: (100; 200; первый) . Может кто-нибудь сказать мне, как разделить эту информацию на три массива: Мин = 100, Макс = 200 и Имя = первый . Я попробовал это с

с = ЕОКП (вх);

я = atoi (szinput);

но его чтение 10 в первый раз и 00 в секунду ... и так далее в цикле

c сохраняет 10, а не 1, поэтому я не могу получить нужную информацию для массивов ...

Итак, массив Min хранит 1000, а не 100

Спасибо.

Ответы [ 4 ]

2 голосов
/ 16 октября 2011

используйте scanf или fscanf как это:

scanf("(%d;%d;%[^)])",&min,&max,str);
0 голосов
/ 16 октября 2011

Вы можете сделать что-то вроде следующего

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);
0 голосов
/ 16 октября 2011

Использование 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
0 голосов
/ 16 октября 2011

Вот классный, простой урок о том, как это сделать.

Обратите внимание, что вам нужно немного адаптировать пример, но это не должно быть слишком сложным..

Также вы можете попытаться найти библиотеку, которая делает эту работу, я уверен, что есть много таких библиотек для C:)

...