1

(100; 200; first)という情報を含むテキストファイルを取得しました。この情報をMin = 100、Max = 200、Name=firstの3つの配列に分割する方法を教えてもらえますか。私はこれを試しました

c = getc(inp);

i = atoi(szinput);

しかし、最初は10を読み取り、2番目は00を読み取ります...などをループで読み取ります

cは1ではなく10を保存するため、配列の正しい情報を取得できません。

したがって、配列Minは100ではなく1000を格納します

ありがとう。

4

4 に答える 4

2

使用するscanfか、fscanf次のようにします:

scanf("(%d;%d;%[^)])",&min,&max,str);
于 2011-10-16T16:16:12.647 に答える
0

これを行う方法に関するクールでシンプルなチュートリアルを次に示します。

例を少し変更する必要があることに注意してください。ただし、それほど難しくはありません。

また、その仕事をするライブラリを見つけようとすることもできます.Cにはそのようなライブラリがたくさんあると確信しています:)

于 2011-10-16T15:43:07.863 に答える
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);
于 2011-10-16T15:44:34.657 に答える
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
于 2011-10-16T16:15:27.343 に答える