C,代码一起运行

时间:2018-07-05 14:58:16

标签: c

#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 :

我想逐一运行保存功能的代码。我该如何解决?

1 个答案:

答案 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;
    }
}