2012-02-11 9 views
0

テキストファイルのすべての数値を配列に保存するにはどうすればよいですか?例:ファイルから数値の文字列を読み込んで配列に入れる方法は?

私の名前はHenry、私は19歳です。私は1992年に生まれました。

プログラムは、番号19、1992、5、2をファイルから読み取り、配列に保存する必要があります。単語が52rokの場合は、数字52を読み取る必要があります。

+0

*厳密には重複していませんが、[私の前の質問への回答](http://stackoverflow.com/a/3096245/179910)はこれをかなりうまくカバーしています。 –

+0

クイックガイダンス。ファイルを「開く」、行単位で読み込み、atoiを使って文字列をintに変換するコードを書く。 intを配列に保存します。印象的な19歳とstackoverflowで質問を始めている。それを維持しますが、質問の質も向上させてください。あきらめてはいけない。 – Siddharth

+0

@MichaelPetrotta私は数値を取得するためにどのような値と条件を読んでいるのですか?私がファイルを読む方法を知る唯一の方法は 'getc()'です。 'void main(int argc、char * argv []) { \t FILE * fp; \t char ch; ary [100]、i; \t fp = fopen(argv [1]、 "r"); \tながら(!(CH = GETC(FP))= EOF) \t {\t \t "いくつかの数字をチェックする条件" 進(i)はCHを=。 i ++; \t} \t fclose(fp); } ' –

答えて

2

数字を除くすべての文字をスペースで置き換える方法と、strtokを使用して結果の文字列をトークン化する方法があります。

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

int main() { 
    char s[] = "My name is Henry, I am 19 years old. I was born in 1992. 5ro2k."; 
    char *p = s; 
    while (*p) { 
     if (!isdigit(*p)) { 
      *p = ' '; 
     } 
     p++; 
    } 
    p = strtok(s, " "); 
    while (p) { 
     printf("%s\n", p); 
     p = strtok(NULL, " "); 
    } 
} 

この例では、汚す主なものは、スレッドセーフではありませんstrtokの使用、次のとおりです。ここで

は、あなたのニーズに合わせて修正することができ汚いpseudocodish例です。代わりに strtok_rを使用してください。もちろん、整数の文字列を解析する必要があります( atoiはそのための良い選択です)。

関連する問題