Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中以浮点形式读取txt文件的行_C_File Io - Fatal编程技术网

在C中以浮点形式读取txt文件的行

在C中以浮点形式读取txt文件的行,c,file-io,C,File Io,我有一个文本文件,其中的文本如下: p 1.002 2.705 3.601 p 4.005 9.001 1.044 ... 我想得到浮点值并将它们分配给变量。到目前为止,我已经 FILE *fileStream = fopen("file.txt, "r"); char fileText[100]; float x; while (fgets(fileText, sizeof fileText, fileStream)) { if (fil

我有一个文本文件,其中的文本如下:

p 1.002 2.705 3.601
p 4.005 9.001 1.044
...
我想得到浮点值并将它们分配给变量。到目前为止,我已经

FILE *fileStream = fopen("file.txt, "r");
char fileText[100];
float x;
while (fgets(fileText, sizeof fileText, fileStream))
    {
        if (fileText[0] == 'p')
        {
            x = fileText[2];
            printf("%f",x);
        }
    }
    fclose(fileStream);

但是它打印出了一些不在线的浮动。我是新来C的,所以我不知道如何获得彩车。非常感谢您的帮助。

如果您想从txt文件中读取浮点数,也许您应该使用
fscanf
函数从文件中读取您想要的每个值

在我看来,您应该使用以下说明通过您提供的文本文件读取浮点数:

fscanf(文件流,“p%f”和&x)

通过上述函数,
p
被读取并忽略,但第一个浮点数被读取并放入变量
x
,您可以通过
printf(“%f”,x)打印它

您还可以在中阅读更多关于它的信息

其次,您将通过在代码中输入的指令获得编译时错误:

x=fileText[2]

这是因为不能将几个字符初始化为浮点数。这毫无意义。要将字符串转换为浮点数,应使用此函数将字符串转换为浮点数:

x=atof(fileText)

通过上面的函数,如果您的程序能够,它将
fileText
转换为浮点数,并将其放入
x
变量中


您应该包括
stdlib.h
以使用
atof()

如果您想从txt文件中读取浮点数,也许您应该使用
fscanf
函数从文件中读取您想要的每个值

在我看来,您应该使用以下说明通过您提供的文本文件读取浮点数:

fscanf(文件流,“p%f”和&x)

通过上述函数,
p
被读取并忽略,但第一个浮点数被读取并放入变量
x
,您可以通过
printf(“%f”,x)打印它

您还可以在中阅读更多关于它的信息

其次,您将通过在代码中输入的指令获得编译时错误:

x=fileText[2]

这是因为不能将几个字符初始化为浮点数。这毫无意义。要将字符串转换为浮点数,应使用此函数将字符串转换为浮点数:

x=atof(fileText)

通过上面的函数,如果您的程序能够,它将
fileText
转换为浮点数,并将其放入
x
变量中


您应该包括
stdlib.h
来使用
atof()

为什么不使用
fgets
,然后是
sscanf
浮点x,y,z
然后在
fgets()
if(sscanf(fileText,“p%f%f%f”,&x,&y,&z)!=3){/*处理错误*/}
其他wize,
x
y
z
现在从那一行开始保持3个浮点数。@kiranBiradar(我想你的意思是
fgets()
,然后是
ssc()
fgets
后跟
sscanf
float x,y,z
然后在
fgets()
if(sscanf(fileText,“p%f%f%f”,&x,&y,&z)!=3){/*处理错误*/}
其他wize,
x
y
z
现在从那一行开始保持3个浮点数。@kiranBiradar(我想你的意思是
fgets()
,然后是
ssc()