#include <stdio.h>
#include <conio.h>
char save ();
char save()
{
char name[30];
char surname[30];
char number[12];
printf("Name : \n");
scanf("%d",&name);
printf("Surname : \n");
scanf("%d",&surname);
printf("Number :\n");
scanf("%d",&number);
}
int main()
{
while(1)
{
int a;
printf("please select ");
scanf("%d",&a);
switch(a)
{
case 1 : save(); break;
default : printf("ok."); break;
}
break;
}
}
当我按1运行save()函数时,它不会一一打印所有语句。
例如在此代码输出中是:
(first output)1- Name : (i enter my name)
(second output)2- Surname:
Number :
我想逐一运行保存功能的代码。我该如何解决?
答案 0 :(得分:0)
您必须在您的%d
函数中将scanf中的%s
(整数)更改为char save();
(字符串)。当我们需要读取整数时,例如使用%d
来表示 char ,使用%c
来读取 float 时,我们使用%f
等等。%s
用于读取字符串 (字符数组)。您的代码使用不正确。此外,您return
也不提供{ {1}}函数,其返回类型为char save();
。如果不返回任何值,则可以使返回类型为char
。
如果要读取字符串,则不需要void
运算符。就像&
一样。
修改后的代码:-
scanf("%s", name);
输出:-
#include <stdio.h>
#include <conio.h>
char save();
char save()
{
char name[30];
char surname[30];
char number[12];
printf("Name : \n");
scanf("%s", name); //change
printf("Surname : \n");
scanf("%s", surname); //change
printf("Number :\n");
scanf("%s", number); //change
}
int main()
{
while (1)
{
int a;
printf("please select ");
scanf("%d", &a);
switch (a)
{
case 1:
save();
break;
default:
printf("ok.");
break;
}
break;
}
}