检测文件是否包含整数以外的字符 intmain(intargc,char*argv[]) {/*请忽略额外的声明*/ 文件*fp; 整数[100]; int值; int i=-1; char*addr1; if((fp=fopen(argv[1],“r”)==NULL) { printf(“无法打开”); 返回1; } 而(!feof(fp)&&fscanf(fp,%d,&value)&&+i

检测文件是否包含整数以外的字符 intmain(intargc,char*argv[]) {/*请忽略额外的声明*/ 文件*fp; 整数[100]; int值; int i=-1; char*addr1; if((fp=fopen(argv[1],“r”)==NULL) { printf(“无法打开”); 返回1; } 而(!feof(fp)&&fscanf(fp,%d,&value)&&+i,c,C,我必须从文件中读入整数数组。此外,如果文件包含整数以外的任何其他字符,则应报告错误。我能够完成上面发布的第一部分。请帮我做第二部分。如果文件只包含整数,则将其存储在数组中。PS:这只是某些程序的一部分。稍后我必须处理程序中的整数数组。读取输入后,如果读取字符,则您的fscanf将返回0,这意味着它在EOF之前不会读取。 在while之后但在关闭fp int main(int argc, char *argv[]) {/*Please ignore extra declarations*/

我必须从文件中读入整数数组。此外,如果文件包含整数以外的任何其他字符,则应报告错误。我能够完成上面发布的第一部分。请帮我做第二部分。如果文件只包含整数,则将其存储在数组中。PS:这只是某些程序的一部分。稍后我必须处理程序中的整数数组。

读取输入后,如果读取字符,则您的
fscanf
将返回0,这意味着它在
EOF之前不会读取。

while
之后但在关闭
fp

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;
}

读取输入后,
fscanf
如果读取字符,将返回0,这意味着在
EOF.

while
之后但在关闭
fp

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;
}

关于你的文件是如何组织的,请不要让我们忽略额外的声明。当您创建一个MCVE()以放入SO时,请确保没有额外的声明。最好在标准错误上报告错误(使用
fprintf(stderr,…)
而不是
printf(…)
)。当您无法打开文件时,最好报告未打开的文件名,这样用户就不必猜测您引用的是哪个文件。请注意,关于您的文件是如何组织的信息很少。请不要让我们忽略额外的声明。当您创建一个MCVE()以放入SO时,请确保没有额外的声明。最好在标准错误上报告错误(使用
fprintf(stderr,…)
而不是
printf(…)
)。当你无法打开一个文件时,最好报告没有打开的文件名,这样用户就不必猜测你所指的是哪个文件。请注意。