循环打印和scanf

时间:2016-06-08 11:52:28

标签: c scanf

此程序具有此值: ABCDEF 在第一个是好的

但是当您输入带空格的值时,例如: ABC DEF 该程序工作错误!!!! while循环第二次忽略scanf 我做错了什么?!

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main(){
    bool checkSrc = false;
    bool checkDst = false;

    while (!checkSrc && !checkDst)

    {

    char ins[10];

    printf("White Player : ");
    scanf("%s",&ins);

    }

}

1 个答案:

答案 0 :(得分:2)

  

%s - 字符串。这将读取后续字符,直到找到空格(空白字符被视为空白,换行符和制表符)。

我建议您使用fgets()而不是scanf(),因为后者没有缓冲区溢出保护。

#define namesize 15
char *ins = malloc (namesize);

fgets(ins, namesize, stdin);