2016-09-22 17 views
-2

これがうまくいかない理由はわかりません。コードとエラーが付いています。注目する行はif (strlen (String() >= MAX_STR_LEN-1))STRLENエラー - 文字列タイプ

strlenを使用して、入力ファイルの現在の文字を保持する一時的な値であるStringを比較しようとしています。 Stringのサイズと、値が256の整数の変数MAX_STR_LENを比較したいと思います。それ以上の情報があれば教えてください。 (STRLEN(文字列()> = MAX_STR_LEN-1)){} は、文字列の後に()を削除する場合

void ReadData(FILE *InputFile, DArray *DynamicArrayPtr) 
    { 
    Data TempData;    /* temp variable to hold data */ 
    int lcv = 1;    /* loop control variable  */ 
    int strLen;    /* The actual input string length */ 
    char String[MAX_STR_LEN];   /* temp variable to hold string */ 

    while (EOF != fscanf(InputFile, "%s", String)) 
    { 
     /* Insert code here to make sure the input data is not too long*/ 
    if (strlen (String() >= MAX_STR_LEN-1)) { 
    } 
    else { 
     printf("Error, input string too long \n"); 
    } 
     TempData.Num = lcv++; 
     strcpy(TempData.String, String); 
     PushToDArray(DynamicArrayPtr, &TempData); 
    } /* while() */ 
    } /* ReadData() */ 

Error Message Screenshot

+0

文字列を 'strlen'と比較することは非常に悪い考えです。とにかくそれはどうしたらいいのですか? – Olaf

+2

'String'は関数ではありません。なぜあなたはそれを呼んでいますか?かっこと未使用の変数を取り除く。エラーメッセージは非常に明確です。 – TisteAndii

+1

そしてあなたが使っていないヨーダの条件はすべきです。 – Olaf

答えて

0

誤差はこの に発生しました。文字列は関数ではありません。 strlenはStringの長さを返します。以下は正常に動作します。

+0

@yabetsありがとう、エラーを解決しましたが、テストが正しくない場合の結果です。現在、dogという単語だけでさえ、256バイトより長いと言われています。 http://imgur.com/a/zSYnM –

+0

if(strlen(String)> = MAX_STR_LEN-1){ } が> =を使用しているため、文字列はMAX_STR_LEN-1より大きい必要があります。小さな単語の場合は、その代わりに<=記号> = – yabets

+0

が必要です。私は他の声明の中にいると思っていた。それは今、あなたに感謝して働いています! –

関連する問題