0

これを理解するのに問題があり、2つの名前を2つのchar[]にfscanfしようとしています。

if (numpairs == 2){
            fscanf("%s %s", malename1[MAX], malename2[MAX]); //read in names 
            printf("%s %s", malename1[MAX], malename2[MAX]); //print out names

これはクラッシュして、「waring:warning:互換性のないポインタ型から'fscanf'の引数1を渡す」と表示されます。

編集:MAXは20として定義され、malename1 [MAX + 1] malename2 [MAX + 1](nullを説明するために+1)

編集:私は読み取りをいくらか機能させていますが、malename1の読み取りを終了するためのスペースをどのように説明できますか?私は、malename1についてはChrisで、malename2についてはRyanで読んでいますが、malename1については、ChrisRyanをスキャンします。

4

2 に答える 2

1

の最初の引数fscanf()FILE*ではなくchar*です。

を使用するつもりであると仮定するとscanf()、コードは a を acharとして処理しようとしています (前述のように type を持っているとchar[]仮定malename1します)。への変更:malename2char[]

scanf("%s %s", malename1, malename2);
printf("%s %s", malename1, malename2);

または場合fscanf()

fscanf(fp, "%s %s", malename1, malename2); /* where 'fp' is a valid 'FILE*'. */

バッファ オーバーランを防ぐために、読み取る最大長を追加することもできます。

fscanf(fp, "%20s %20s", malename1, malename2); /* Read max of 20 chars. */
于 2012-06-14T14:49:57.790 に答える
0

malename1malename2が 型の文字列の場合char *。次に、必要なステートメントは次のようになります。

fscanf(fp, "%s %s", malename1, malename2); //fp is file pointer

http://www.cplusplus.com/reference/clibrary/cstdio/fscanf/

于 2012-06-14T16:28:08.540 に答える