簡體   English   中英

如何將數據從txt文件加載到C程序的變量中?

[英]How do I load data from a txt file into variables in my C program?

我有一個具有頻道結構的程序:

struct channel
{
   char title[40];
   float gain;
   float offset;
}; 
int main (int argc, char **argv)
{
  struct channel channels[8];
}

還有一個名為configurationSettings.txt的文本文件,其中包含填充8個通道所需的信息:

Title1
20
30
Title2
10
0
Title3
34
03
...

我將如何從文本文件中提取數據並將其放入相應的變量中?


編輯:

這是我目前的前進方向:

FILE *fptr;
if ((fptr=fopen("configurationSettings.txt","r"))==NULL){
   printf("\n\nConfiguration file not found.\n");

  // exit(1); // Program exits if file pointer returns NULL. 
}
while (1) {
    if (fgets(loadedTitle,150, fptr) == NULL) break;
if (fgets(loadedGain,150, fptr) == NULL) break;
if (fgets(loadedOffset,150, fptr) == NULL) break;          
      printf("%s", loadedTitle);
  printf("%s", loadedGain);
  printf("%s", loadedOffset);
      strcpy(channels[i].title, loadedTitle);
  loadedGain == channels[i].gain;
  loadedOffset == channels[i].offset;
}
printf("\n\n%s", channels[i].title);
printf("%f", channels[i].gain);
printf("\n%f", channels[i].offset);
fclose(fptr);

這是我得到的輸出。 基本上,它只是打印所有內容並將最后一行存儲為第一個變量。 這絕對不是我想要的。

Title 1
10
30
Title 2
50
0
Title 3
38
20

20

我不會編寫代碼,但是通常可以嘗試幫助algotihm。

  1. 打開文件。 幫助: fopen()
  2. 檢查打開是否成功。 提示:返回值。
  3. 從文件中讀取一行。 檢查是否成功。 幫助: fgets()和返回值。
  4. 根據數據模式,標記讀取行並存儲到數組中。 幫助: strtok()
  5. 繼續直到令牌為NULL。

注意:在第4點,您需要將某些標記轉換為float類型。 幫助: strtod()


編輯:

適當添加代碼。 您的代碼的反饋

  1. 取消注釋// exit(1); ,如果fopen()失敗,則確實應該退出(注意,並非必須,也可以跳過 fopen()

  2. fgets()讀取一行 因此,基本上,您需要三個連續的fgets()來填充結構的一個實例。 第一個fgets()將給出title ,第二個將gain title ,第三個將offset

  3. fgets()讀取並存儲尾隨\\n 您可能想要擺脫它。

  4. 也使用counter來跟蹤結構數組成員索引。 您的數組此處只有8個元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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