C语言中scanf为什么没有执行呀?解决方法

C语言中scanf为什么没有执行呀?
C语言中scanf为什么没有执行呀?解决方法
这里的第二个scanf()为什么没有执行呢?我设置了断点的时候也没有发现它执行。请问各位老师这是什么地方的问题?
------解决方案--------------------
第二个scanf指定是执行了的,只不过你的这两个scanf的写法有问题。

你第一个scanf读到 \n 返回了,然后让第二个scanf去读这个\n,不还是直接返回么
------解决方案--------------------
输入的字符串都在标准输入缓存中,为了避免回车键的干扰,可以在scanf前面加上fflush(stdin); 来清除标准输入的缓存。

#include <stdio.h>
#include <string.h>
void main()
{
char num[50];
scanf("%s",num);
printf("%s\n",num);
int len=strlen(num);
fflush(stdin); 
scanf("%c",&num[len]);
printf("%s\n",num);
}


这样就可以得到你想要的答案
------解决方案--------------------
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。

------解决方案--------------------

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char num[50];
scanf("%[^\n]", num); //输入test1回车,此时num读到了test1
printf("%s\n", num); 

int len = strlen(num);
scanf("%[^\n]", &num[len]); //这个读取到了空白字符,所以是执行了scanf,运行结果让你以为没执行而已
printf("%s\n", num); 
system("pause");
return 0;
}


解决方法
1.在scanf输入个空格
2.使用fflush


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char num[50];
scanf(" %[^\n]", num); //注意有个空格
printf("%s\n", num); 

int len = strlen(num);
scanf(" %[^\n]", &num[len]); //注意有个空格
printf("%s\n", num); 
system("pause");
return 0;
}



#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char num[50];
scanf("%[^\n]", num); 
printf("%s\n", num); 

fflush(stdin); //清空缓冲区
int len = strlen(num);
scanf("%[^\n]", &num[len]); 
printf("%s\n", num); 

system("pause");
return 0;
}