C语言malloc和gets的问题。求高手解答。 输入字符串,加上空格,用scanf不能读取空格后的字符。该怎么办?

2024年11月23日 07:40
有3个网友回答
网友(1):

#include
#include
int main(void){
int n;
char *p;
puts("input number");
scanf("%d",&n);
p=(char *)malloc(n*sizeof(char));
if(p==NULL)
{
puts("make failed");
exit(EXIT_FAILURE);
}
fflush(stdin);//清空输入缓冲区,否则gets会把之前输入数字后面的回车当做一个字符串输入。
gets(p);
puts(p);
return 0;
}

网友(2):

scanf 在缓冲区遗留了一个换行符 被gets接受
在scanf语句之后加一个
fflush(stdin); 清除缓冲区就好了

网友(3):

p=(char *)malloc(n*sizeof(char)); //为p分配空间 ,假设这是a句,

gets(p); //请注意,在这一句与a句之间,并未给指针p指向一个字符串 或字符。那么,你让程序如何gets()呢??