【发布时间】:2014-12-13 22:13:52
【问题描述】:
我有下面的代码
#include<stdio.h>
#include<string.h>
#include"gestion.h"
#define N 2
void remplissage_info_etudient(Etudiant *E)
{
int i;
FILE *fichier = NULL;
char *test ;
fichier = fopen("test.txt", "w");
if (fichier != NULL)
{
fputs("nom des etudients \t CNE \t CNI \t code confidentiel \n ", fichier) ;
for(i=0;i<2;i++)
{
//// lectures des infos
printf("entrez le nom et le prenom de l'etudient %d: \n",i);
scanf(" %s %s",E[i].nom,E[i].prenom);
printf("entrez le CNE de l'etudient %d : \n",i);
scanf(" %d",&(E[i].CNE));
printf("entrez le CNI de l'etudient %d : \n",i);
scanf(" %s",E[i].CNI);
printf("entrez le code confidentiel de l'etudient %d : \n",i);
scanf(" %d ",&(E[i].Code_confidentiel));
///// ecriture ds le fichier
fprintf(fichier," %s %s \t",E[i].nom,E[i].prenom);
fprintf(fichier," %d\t",E[i].CNE);
fprintf(fichier,"%s\t",E[i].CNI);
fprintf(fichier,"%d \t \n ",E[i].Code_confidentiel);
}
}
else
{
printf("error") ;
}
fclose(fichier);
}
结构E声明为:
typedef struct Etudiant
{
char nom[64];
char prenom[64];
char adresse[64];
int sexe;
char niveau_scolaire[64];
char CNI[64];
int Code_confidentiel;
int CNE;
}Etudiant;
当我使用该函数时:remplissage_info_etudient 我在 fprintf 函数中遇到了一些奇怪的错误: -->在fprintf的最后一次调用中,它没有直接传递到下一行,它要求我输入另一个字符串我不知道该怎么做。scanf函数的多次使用是否有特定的规则?
【问题讨论】:
-
如果我对每个标记为
C的问题都没有检查scanf的返回值一美元,那我会非常富有。 -
我应该在 scanf 返回值中检查什么??
-
@user45232 第一步始终是阅读文档:
scanf。在那里你会看到它返回分配的输出项目的数量。如果它不是你所期望的,那么你不应该继续,因为你的变量没有被分配。