【发布时间】:2018-05-09 08:57:07
【问题描述】:
我对 C 和一般编程相当陌生,所以我不确定我的问题。每当我运行代码并打开新的输出文件时,结构数据只是零。这是我的代码....我已将文本文件内容放在问题的底部。先感谢您。
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int id;
char description[40];
double mancost;
double sellprice;
} ItemInfo;
int readInfo( ItemInfo input[] );
void listData(ItemInfo input[], int i);
int main(){
ItemInfo input [200];
int i;
i = readInfo( input );
listData (input, i) ;
return 0;
}
int readInfo( ItemInfo input[] ) {
FILE *fin;
int i = 0;
fin = fopen( "C:/Users/ecrooks98/CLionProjects/untitled5/p6-initial.txt", "r" );
if( fin == NULL ) {
printf( "File cannot be opened\n" );
}
else {
while( !feof(fin)) {
fscanf( fin, "%d\t", &input[i].id);
fscanf( fin, "%39[^\t\n]s\t", input[i].description);
fscanf( fin, "%lf\t", &input[i].mancost);
fscanf( fin, "%lf\n", &input[i].sellprice);
i++;
}
fclose( fin );
}
return i;
}
void listData(ItemInfo input [], int i) {
FILE *fout;
int j;
fout = fopen("output.txt", "w");
for (j = 0; j < i; j++) {
fprintf(fout, "%d\t", input[i].id);
fprintf(fout, "%s\t", input[i].description);
fprintf(fout, "%lf\t", input[i].mancost);
fprintf(fout, "%lf\n", input[i].sellprice);
}
}
我输入的文本文件也是这样的
2250 shoes 3.00 80.00
2251 hat .50 20.00
2252 iphone .10 600.00
2253 grill 80.00 100.00
【问题讨论】:
-
除其他问题外,在您的
listData函数中,您需要打印input[j].id和其余部分,而不是[i]。