验证从文本文件中读取的数字



我正在从一个文本文件中读取15个数字,每个数字在一个新的行:

<>之前123.4510121314152122232426之前

从代码中可以看到,我需要验证这些数字,使它们小于26,否则终止程序。

目前,我只在将其插入数组(numArray)后进行验证。是否有一种更干净的方法来做它(在插入数组之前进行验证)?

问题是,我似乎无法在正在读取的文本文件中获得实际的。这就是为什么我使用数组上的循环索引来验证它(int x = numArray[I];)

任何帮助都很感激,我对C编程很陌生。谢谢。

FILE *myFile = fopen(dataset.txt, "r");
int numArray[15];
if (myFile != NULL) {
    for (int i = 0; i < sizeof(numArray); i++)
    {
        //insert int to array
        fscanf(myFile, "%d", &numArray[i]);
        //Validate number
        int x = numArray[i]; 
        if (x > 25) {
            printf("Invalid number found, closing application...");
            exit(0);
        }
    }
    //close file
    fclose(myFile); 
}
else {
    //Error opening file
    printf("File cannot be opened!");
}

当然,您可以将其存储在局部变量中,并仅在有效的情况下进行赋值。但是如果你调用exit(0)无效它不会改变任何东西。我猜你想从循环中取出break

顺便说一句,你的循环是错误的。你必须将sizeof(numArray)除以一个元素的大小,否则你将循环太多次,如果输入文件中有太多数字,你将崩溃机器(是的,我还添加了一个测试文件结束)

if (myFile != NULL) {
    for (int i = 0; i < sizeof(numArray)/sizeof(numArray[0]); i++)
    {
        int x; 
        //insert int to array
        if (fscanf(myFile, "%d", &x)==0)
        {
            printf("Invalid number found / end of file, closing application...n");
            exit(0);  // end of file / not a number: stop
        }
        //Validate number
        if (x > 25) {
            printf("Invalid number found, closing application...n");
            exit(0);
        }
        numArray[i] = x;
    }
    //close file
    fclose(myFile); 
}

相关内容

  • 没有找到相关文章

最新更新