scanf的问题,比较奇怪。
我用scanf来读取一个字符,无论如何就是不能执行成功。
语句是这样的
char reply='y';
printf("\nDo you want to continue?(y/n):");
scanf("%c",&reply);
结果就是不能输入,在最后一句一直告诉我地址写错误。
后来我把最后一句改成scanf(" %c",reply);居然可以了。
谁能告诉我为什么?
说明:在main函数中单独这样写不会出错,有耐心的朋友看看我的代码。
#include <cstdio>
#include <iostream.h>
struct Student
{
char name[20];
int rollno,age;
};
void WriteData(char *filename);
void ReadData(char *filename);
int main(int argc,char *argv[])
{
/*
char a;
a='b';
printf("Enter a char:");
scanf("%c",&a); //!!!此处可以成功执行
printf("\nResult is %c\n",a);
*/
WriteData("c:\\student.dat");
// ReadData("c:\\student.dat");
return 0;
}
void WriteData(char *filename)
{
char reply;
Student li;
FILE *fp;
fp = fopen(filename,"w");
if (fp!=NULL)
{
do
{
printf("\nEnter your Roll No.:");
scanf("%d",&li.rollno);
printf("\nEnter your Name:");
scanf("%s",li.name);
printf("\nEnter your Age:");
scanf("%d",&li.age);
printf("%d %s %d \n",li.rollno,li.name,li.age);
fwrite(&li,sizeof(Student),1,fp);
printf("\nDo you want to continue(y/n):");
scanf(" %c",&reply); //!!!此处必须使用" %c",若使用"%c",则不能执行成功
} while (reply!='n');
fclose(fp);
}
}