#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;
}
1
de rt
如果输入带空格的字符串,我就无法输入第3个整数。
答案 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;
}