0

4 行のデータを含むテキスト ファイルがあります。各行は以下の通り

Candies 2
Cookies -4
Soda 5
Milk 8

C 関数で値 (2,-4,5,8) を読み取り、それらを変数に格納する必要があります。

次のコードを書きましたが、XXXXXX で示したところで行き詰まりました。そことその後に正確に何が入るのかわかりません。あなたの助けに感謝。

  void function()
  {
    int count=0,value[4],length=0;

    FILE *fp;

    fp = fopen("file.txt","r");

    if (fp == NULL)
    {
      fprintf(stderr, "Can't open file !\n");
      exit(1);  
    }

     char line[100];
        for (count = 0; count < 4; count++)
        {      
            if (fgets(line,sizeof(line),fp)==NULL)
        break;

        else 
    {  

       while(fp!="" && length<strlen(line))
       {
       fp++;length++
       }

       if(fp == "") 
         value[count]= XXXXXXXX;
    }  
} 
4

2 に答える 2

0
void function()
 {
    int count=0,value[4],length=0;

    FILE *fp;

    fp = fopen("file.txt","r");

    if (fp == NULL)
    {
      fprintf(stderr, "Can't open file !\n");
      exit(1);  
    }

     char line[100];
        for (count = 0; count < 4; count++)
        {      
            if (fgets(line,sizeof(line),fp)==NULL)
                break;

          else 
            {  
              sscanf(line,"%*s %d",&value[count]);
            }
      } 

私はコードを変更しました、あなたはそれを試すことができます。

于 2012-11-19T03:28:35.720 に答える
0

インクリメントしないでくださいfp。それはあなたが思っていることをしません。

既存の C 関数から最小限の助けを借りてこれを行いたい場合は、行内でスペースを検索するだけです (わかりました、私はisspaceand atoihere を使用しました):

int pos = 0;
while( line[pos] != 0 && !isspace(line[pos]) ) pos++;
if( line[pos] != 0 ) {
    line[pos++] = 0;
    value[count] = atoi( &line[pos] );
    printf( "Key: '%s' / Value: %d\n", line, value[count] );
}

または、使用できますsscanf...

int nread = sscanf( line, "%*s %d", &value[count] );

または:

char key[100];
int nread = sscanf( line, "%s %d", key, &value[count] );
于 2012-11-19T03:18:09.600 に答える