[英]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。
fopen()
fgets()
和返回值。 strtok()
注意:在第4點,您需要將某些標記轉換為float
類型。 幫助: strtod()
編輯:
適當添加代碼。 您的代碼的反饋
取消注釋// exit(1);
,如果fopen()
失敗,則確實應該退出(注意,並非必須,也可以跳過 fopen()
。
fgets()
讀取一行 。 因此,基本上,您需要三個連續的fgets()
來填充結構的一個實例。 第一個fgets()
將給出title
,第二個將gain
title
,第三個將offset
。
fgets()
讀取並存儲尾隨\\n
。 您可能想要擺脫它。
也使用counter來跟蹤結構數組成員索引。 您的數組此處只有8個元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.