2017-04-22 5 views
0
int main(int argc, char *argv[]) 
{/*Please ignore extra declarations*/ 
    FILE *fp; 
    int integers[100]; 
    int value; 
    int i = -1; 
    char *addr1; 
    if ((fp = fopen (argv[1], "r")) == NULL) 
    { 
     printf("cant open"); 
     return 1; 
    } 
    while (!feof(fp) && fscanf(fp, "%d", &value) && ++i < 100) 
     integers[i] = value; 

    fclose (fp); 
    int k; 
    k = i; 

    int arrlen, processes, j, *pint, number; 
    float p; 
    arrlen = k; 

    printf("Size of array is %d\nThe array is:\n", arrlen); 
    for(i = 0; i < k; i++) 
    { 
     printf("%d\t", integers[i]); 
    } 
    return 0; 
} 

ファイルから整数配列に読み込む必要があります。また、ファイルに整数以外の文字が含まれている場合は、エラーを報告する必要があります。私は上に投稿した最初の部分を行うことができました。第2部で私を助けてください。ファイルに整数だけが含まれている場合は、配列に格納します.PS:これは一部のプログラムの一部です。後でプログラムで整数配列を処理しなければならない。ファイルに整数以外の文字が含まれているかどうかを検出するには

+0

を閉じるリトル情報の前に、これを使用するまで、読んで意味の文字を、読み取った場合の入力を読んだ後、あなたのfscanfは0を返しますが組織されています。 – sjsam

+0

追加の宣言を無視しないようにしてください。 SOを置くためのMCVE([MCVE])を作成するときは、追加の宣言がないことを確認してください。 (printf(...)の代わりに 'fprintf(stderr、...)'を使って)標準エラーでエラーを報告するのが最善です。また、ファイルを開くことができなかった場合は、開いていないファイル名を報告することをお勧めします。ユーザーは、参照しているファイルを推測する必要はありません。 –

+0

['while(!feof(file)) 'は常に間違っていることに注意してください](http://stackoverflow.com/questions/5431941/while-feof-file-is-always-wrong)。 –

答えて

2

それは文句を言わないEOF.

while後にどのようにあなたのファイルにfp

if(!(feof(fp) || i==100)) 
{ 
    printf("Contains character"); 
    return 1; 
} 
関連する問題