簡體   English   中英

使用C中文本文件的內容初始化數組

[英]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中也可以使用)。

由於數組索引從0N - 1for循環將導致不確定的行為。 因此對於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM