-1
正在將文件中的信息掃描到結構中,然後顯示以檢查它是否正確輸入。將數據從文件掃描到結構
我使用開發的C++中C.
編寫出於某種原因,該信息不被正確掃描,並且不顯示在所有。 任何幫助,將不勝感激。從記事本
23
kk
f l
23 kk
50000
shfbskfjabdsbf
45
jj
b l
45 yy
80000
gdfygfyfhgu
NOVA.txt的
#include <stdio.h>
#include <string.h>
typedef struct
{
int client_id;
char client_business_name [30];
char client_first_name [20];
char client_last_name [20];
char client_address [40];
float client_budget;
char client_business_info [300];
}Client;
main()
{
Client c[100];
int x;
FILE*z=fopen("NOVA.txt","r");
for (x=0;x<100;x++)
{
c[x].client_id=-1;
strcpy(c[x].client_business_name,"NULL");
strcpy(c[x].client_first_name,"NULL");
strcpy(c[x].client_last_name,"NULL");
strcpy(c[x].client_address,"NULL");
c[x].client_budget=-1;
strcpy(c[x].client_business_info,"NULL");
}
for (x=0;x<100;x++)
{
fscanf (z,"%d\n %[^\n]\n %[^\n]\n %[^\n]\n %[^\n]\n%f\n %[^\n]\n\n",
&c[x].client_id, c[x].client_business_name, c[x].client_first_name,
c[x].client_last_name, c[x].client_address, &c[x].client_budget,
c[x].client_business_info);
}
for (x=0;x<100;x++)
{
printf("\n%d\n",c[x].client_id);
printf("%s\n",c[x].client_business_name);
printf("%s\n",c[x].client_first_name);
printf("%s\n",c[x].client_last_name);
printf("%s\n",c[x].client_address);
printf("%f\n",c[x].client_budget);
printf("%s\n",c[x].client_business_info);
}
fclose (z);
system ("PAUSE");
}
樣品另外,有人可以請張貼固定的代碼是什麼樣子?
給出輸入文件的示例! – Sathish
您應該檢查'fscanf'的返回值以確保所有預期的數據都被正確讀取。 –
您不僅應該檢查'fscanf()'的值,還應該在使用之前檢查'fopen()'的值。對掃描的琴絃長度應用限制會更好。 –