c - 在 C : How do I check if an input file exist, 中,文件中的数字是 int 还是 float,以及它们是否在某个范围内?

标签 c

首先,这是我的第一个 C 项目(也是我使用任何语言的第一个编程项目之一),因此,如果我的语法看起来很奇怪或者我做了一些奇怪的事情,我深表歉意。

我有一个使用三个输入文件的程序。每个文件包含一些数字:一些是整数,一些是 float 。我已经设法检查文件是否存在,但没有检查其他内容。如果不满足任何这些要求,程序应结束并相应地显示错误消息。我见过一些问题询问其中之一,但并不是所有问题都结合在一起。我看到的答案也需要退出一点空间。我希望用尽可能少的行数来完成这项工作。非常感谢您的帮助。

我一直在编写的脚本之一如下所示。如果输入文件不存在,它会给出错误消息,但我已经删除了检查 int 与 float 以及它们是否在范围内的尝试。

<小时/>
#include "header.h"
void visualreader(int *x_range, int *y_range, int *z_range,
                  int *x_cells, int *y_cells, int *z_cells, int *time) {

  // Scans the input file containing parameters for visualizing
  // the velocity vector field
  FILE *fp = fopen("visual_input.dat", "r");

  if (fp) {
    fscanf(fp, "%d %d %d\n", x_range, y_range, z_range);
    fscanf(fp, "%d %d %d\n", x_cells, y_cells, z_cells);
    fscanf(fp, "%d\n", time);
    fclose (fp);
  } else {
    perror("error opening the file" );
  }
}

最佳答案

check if an input file exist

fopen() 如果失败,将返回 NULL,因此使用 fp 的条件是执行此操作的正确方法。

if the numbers in the file are int or float

您必须以字符串形式读取值,然后手动检查字符串中是否有 .。老实说,如果这些值可以是 float ,那么就假设它们始终是 float 并按原样读取它们。在此阶段使程序复杂化以优化整数不会带来任何好处。

if they are within a range

对于读入的每个值(作为 float ),只需手动检查,例如:

if (x_range < minimum_value || x_range > maximum_value) {
  error_routine(...);
}

关于c - 在 C : How do I check if an input file exist, 中,文件中的数字是 int 还是 float,以及它们是否在某个范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10572559/

相关文章:

c - 如何正确格式化输出?

c - 卫生间 : standard input: Bad file descriptor

c - 将多线程window ce app移植到win32

C Valgrind - memcpy 中的源和目标重叠

c - 需要有关简单 C 命令行参数的帮助

c - *pointer_variable != '\0' 不适用于检查 strtol() 函数中的不成功转换

c - 在 free(x) 中将 null 值设置为 x(在语言实现中)

c - C 中的结构序列化并通过 MPI 传输

c - 如何在 Cuda 中的简单 if 语句中避免分歧分支

java - 既不是句法也不是语义的错误?