[英]initialising an array with the content of a text file in C
我編寫了以下代碼,以從文本文件中讀取數據並將值存儲在數組中。 我的代碼未讀取文件。
正在使用的庫頭
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <conio.h>
我的主要
int main()
{
FILE *fpoo;
float NumArr[5];
//我同樣嘗試過“ c:\\ Fly_u.txt”
fpoo= fopen ("Fly_u.txt","r");
if(fpoo!=NULL)
for (int i=0;i<6;i++)
{
fscanf(fpoo,"%d\n",NumArr[i]);
{
else
{
printf("me");
}
for (int i=0;i<6;i++)
{
printf("%f",NumArr[i]);
}
fclose(fpoo);
_getche();
return 0;
}
//文本文件的內容如下
0.99247
0.14727
-0.00041387
-1.737
0.20475
-0.052151
0.14755
-0.0233
-0.32606
0.092085
0.059199
-0.025587
0.0097565
0.13639
0.12007
fscanf()
的使用不正確:
float
格式說明符,它是%f
,而不是int
float
的地址(即float*
),而不是float
更改:
fscanf(fpoo,"%d\n",NumArr[i]);
至:
fscanf(fpoo,"%f\n", &NumArr[i]);
fscanf()
返回成功分配的數量,在這種情況下,應為1
。 推薦檢查輸入已成功讀取,然后再嘗試使用它們。
如果指定"Fly_u.txt"
作為文件名,則它必須與進程的工作目錄位於同一目錄中。 在構造路徑時,請記住先保留'\\'
,或者僅使用'/'
(在Windows中也可以使用)。
由於數組索引從0
到N - 1
, for
循環將導致不確定的行為。 因此對於float NumArr[5];
有效索引為0, 1, 2, 3, 4
但兩個for
循環的終止條件均為i < 6
,使用5
的索引:非法。 增大NumArr
的大小或調整for
循環的終止條件。
嘗試這個
fscanf(fpoo,"%f\n",&NumArr[i]);
^ ^
^ ^
也就是說,傳遞要在其中存儲數據的變量的地址。還要注意%f
而不是%d
。
您沒有指定問題,但是如果從fopen
返回時遇到問題,請檢查文件路徑,然后嘗試將完整路徑傳遞給文件。 如@hmjd所說,您現在所做的假設是文件與可執行文件位於同一位置。
“我同樣嘗試過“ c:\\ Fly_u.txt””這是錯誤的,因為\\在C字符串中具有特殊含義。 您應該使用的是"c:\\\\Fly_u.txt"
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.