所以我的想法是读取一个文件并将其放在struct CARRO的字段中。
事情是,当我尝试printf
结构变量(例如dados[1].marca
)时,它不会在控制台中显示任何内容。
我真的无法看到问题所在,因为fscanf实际上返回8(8个成功读取变量)。
我使用的文件是汽车列表,每行包含有关特定型号的信息,并具有以下格式:
Ford[]Transit Custom Van 270L1 Econetic Base 2.2TDCi H1[\t]2013[\t]3[\t]2[\n]
(...)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
char marca[50];
char modelo[50];
char ano[5];
char lugares[5];
char portas[5];
}CARRO;
main()
{
FILE *fp=NULL;
CARRO dados[4700];
int i=0;
fp=fopen("car.txt","r");
while (fscanf(fp,"%[^ ] %[^\t] %[^\t] %[^\t] %[^\n]",
dados[i].
marca,
dados[i].modelo,
dados[i].ano,
dados[i].lugares,
dados[i].portas)!=EOF);
{
i++;
}
fclose(fp);
}
答案 0 :(得分:0)
请参阅以下代码中的评论:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
char marca[50];
char modelo[50];
char ano[5];
char lugares[5];
char portas[5];
} CARRO;
int main() // Changed to 'int' type.
{
FILE *fp=NULL;
CARRO dados[4700];
int i=0;
int nCnt; // Added this line for printing result.
fp=fopen("car.txt","r"); //Should check fp here to ensure file was successfully opened.
while(fscanf(fp," %[^ ] %[^\t] %[^\t] %[^\t] %[^\n]\n", // Slightly modified to 'gobble-up' newlines.
dados[i].marca,
dados[i].modelo,
dados[i].ano,
dados[i].lugares,
dados[i].portas)!=EOF) // Removed semicolon. As per 'BLUEPIXY'
{
i++;
}
fclose(fp);
/* Added to print result. */
for(nCnt = 0; nCnt < i; ++nCnt)
printf("marca[%s] modelo[%s] ano[%s] lugares[%s] portas[%s]\n",
dados[nCnt].marca,
dados[nCnt].modelo,
dados[nCnt].ano,
dados[nCnt].lugares,
dados[nCnt].portas
);
return(0);
}