阅读int&一个scanf中的char数组

时间:2015-08-20 07:47:47

标签: c

是否可以一次读取字符和整数? 像这样:

char name[32];
int age;

printf("Give name and age: ");
scanf("%s%d%*c", name, &age);

它一直在阻挡。

5 个答案:

答案 0 :(得分:3)

更新:您只接受输入但不打印任何内容。请参阅以下代码(工作和测试

#include <stdio.h>

int main(void) {
char name[32];
int age;

printf("Give name and age: ");
scanf("%31s%d", name, &age);

printf("Your name is %s and age is %d",name,age);
}
  

输入:Shaz 30

     

输出:您的名字是Shaz,年龄是30

答案 1 :(得分:2)

char name[32];
int age;

printf("Give name and age: ");
scanf("%31s%d", name, &age);

如果输入string超过31个字符,则age读取的值将受到影响,这是fgets派上用场的地方。

不要同时读取同一行输入的名称和年龄。首先读取名称以强制用户输入新行,以便您可以将整行作为输入名称处理。

阅读fgets

答案 2 :(得分:2)

这是方法之一

代码

#include<stdio.h>
char name[32],age;
int main()
{

printf("Enter name and age: ");
scanf("%s%d", name, &age);
printf("\nNAME : %s  AGE : %d",name,age);
}

OUTPUT Refer under the image

答案 3 :(得分:0)

我测试了你的代码,没有错误。也许你应该只添加printf()来打印答案。你会发现你可以得到与你打印的相同的答案。

编辑:如果输入为Colin 23(需要空格),则应使用printf("name is %31s, age is %d", name, age)。然后您将获得输出Colin 23

答案 4 :(得分:-3)

你可以这样做:

#include <stdio.h>

int main(void)
{
    char name[32];
    int age;

    printf("Give name and age: ");
    scanf("%s%d", name, &age);
    printf("%s\n",name);
    printf("%d",age);
}