C编程:从文件中读取并在屏幕上打印
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C编程:从文件中读取并在屏幕上打印相关的知识,希望对你有一定的参考价值。
我试图通过fscanf读取文件test.txt并将其存储在struct数组中。我已经发布了我尝试过的代码。看起来这里的问题是加载功能
这是我在test.txt中的内容:
205,11.20,John Snow
336,23.40,Winter is coming
220,34.20,You know nothing
load函数使用loadinput函数将test.txt文件读入“item”数组,并将“NoPtr”的目标设置为从文件读取的Items数(在本例中应为3)。
在阅读文件后,我也试图在屏幕上打印它,但它不起作用。什么都没有显示出来。
这个程序编译。我在这里做错了什么?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Item {
double value;
int unit;
char name[50];
};
int load(struct Item* item, char Name[], int* NoPtr);
int loadinput(struct Item* item, FILE* data);
void display(struct Item item, int variableA);
int main(void)
{
struct Item FIN[3];
int i, n;
load(FIN, "test.txt", &n);
for (i = 0; i < n; i++)
{
display(FIN[i],0);
}
return 0;
}
int load(struct Item* item, char Name[], int* NoPtr)
{
struct Item ARR[3];
int flagcheck;
FILE* fl;
fl = fopen("Name[]", "r");
while (fl)
{
flagcheck = loadinput(&ARR, fl);
if (flagcheck < 0)
{
fclose(fl);
break;
}
else
{
*NoPtr++;
}
fclose(fl);
}
return 0;
}
int loadinput(struct Item* item, FILE* data)
{
int ret = fscanf(data, "%d,%lf,", &item->unit, &item->value);
if (ret != 2) {
return -1;
}
fgets(item->name, sizeof item->name, data);
item->name[strlen(item->name)-1] = ' ';
return 0;
}
void display(struct Item item, int variableA)
{
printf("|%3d |%12.2lf| %20s |***
", item.unit, item.value, item.name);
return;
}
答案
看修复演示 - BLUEPIXY
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Item {
double value;
int unit;
char name[50];
};
int load(struct Item* item, char Name[], int* NoPtr);
int loadinput(struct Item* item, FILE* data);
void display(struct Item item, int variableA);
int main(void) {
struct Item FIN[3];
int i, n;
load(FIN, "test.txt", &n);
for (i = 0; i < n; i++) {
display(FIN[i],0);
}
return 0;
}
int load(struct Item* item, char Name[], int* NoPtr){
*NoPtr = 0;
int flagcheck;
FILE* fl;
fl = stdin;//fopen(Name, "r");//for ideone
while (fl){
flagcheck = loadinput(&item[*NoPtr], fl);
if (flagcheck < 0){
fclose(fl);
break;
} else {
++*NoPtr;
}
}
return 0;
}
int loadinput(struct Item* item, FILE* data){
int ret = fscanf(data, "%d,%lf,", &item->unit, &item->value);
if (ret != 2) {
return -1;
}
fgets(item->name, sizeof item->name, data);
item->name[strlen(item->name)-1] = ' ';
return 0;
}
void display(struct Item item, int variableA){
printf("|%3d |%12.2lf| %20s |***
", item.unit, item.value, item.name);
return;
}
以上是关于C编程:从文件中读取并在屏幕上打印的主要内容,如果未能解决你的问题,请参考以下文章