如何从文件中获取浮点数

Luc*_*ida 0 c data-manipulation

我有这个文件 txt 有这三个数字“4.151120 4.100 7.9999”。我应该创建一个程序来读取它并对其进行一些进一步的操作。但我不能

int main (int argc, char *argv[]){
    FILE *arq;
    
    arq = fopen("values.txt","r");
    
    float num1, num2, num3;
    
    fscanf(arq,"%.6f %.6f %.6f", &num1, &num2, &num3);
    printf("%.6f %.6f %.6f", num1, num2, num3);
    
    fclose(arq);
    
    return 0;
    
Run Code Online (Sandbox Code Playgroud)

von*_*and 5

它很简单:

#include <stdio.h>

int main(void)
{
    FILE *arq;

    arq = fopen("values.txt", "r");

    float n1, n2, n3;

    if(fscanf(arq, "%f%f%f", &n1, &n2, &n3) != 3)
        fprintf(stderr, "Something's wrong\n");
    else
        printf("Numbers are %f, %f, %f\n", n1, n2, n3);
    
    fclose(arq);
}
Run Code Online (Sandbox Code Playgroud)

您不必声明精度(输入没有实际意义),除非您想匹配数字之间的特定字符串而不是用空格分隔(默认),否则您可以将其省略。

作为一个特殊的豁免,您可以省略return 0from main,它在此处暗示。

  • `.` 与 [`scanf()`](https://pubs.opengroup.org/onlinepubs/9699919799/functions/scanf.html) 等人不正确。使用宽度可能是相关的,但通常不是。它限制了数字字段中非空白字符的数量。如果代码使用`%4f`,那么读取的第一个数字将是`4.15`,第二个是样本数据的`1120`。 (2认同)