如何在字符串后输入第3个整数

时间:2014-06-01 16:16:26

标签: c

#include<stdio.h>
#include<malloc.h>

int main(){
        int a,d;
        char* name;
        name = malloc(sizeof(char*)*25);
        if(NULL == name){
                return 0;
        }
        scanf("%d",&a);
        scanf("%d",&d);
        gets(name);
        printf("\n %d : %s : %d \n",a,name,d);
        return 0;
}

OP:

1
de rt

如果输入带空格的字符串,我就无法输入第3个整数。

2 个答案:

答案 0 :(得分:4)

首先,永远不要使用gets来读取字符串。它现在已经过时了。请改用fgets 其次,\n遗留的scanf字符由gets读取,这就是您无法输入字符串的原因。您需要刷新输入缓冲区。它可以作为

完成
scanf("%d",&a);
scanf("%d",&d);
int c;
while((c = getchar()) != '\n' && c != EOF)  
    ;
fgets(name, 25, stdin);  

同时更改

name = malloc(sizeof(char*)*25);  

name = malloc(sizeof(char)*25);  

或者您可以省略sizeof(char),因为它等于1

name = malloc(25); 

答案 1 :(得分:1)

#include <stdio.h>
#include <stdlib.h> //to standard

int main(){
    int a,d;
    char* name;
    name = malloc(100);//or simply char name[100];
    if(NULL == name){
        return 0;
    }
    scanf("%d", &a);//1st integer input
    scanf(" %99[^\n]", name);//input string with space
    scanf("%d", &d);//3rd integer
    printf("\n %d : %s : %d \n", a, name, d);
    free(name);
    return 0;
}