用scanf读取字符("%c,& ch);

时间:2016-10-09 11:36:34

标签: c++ arrays char scanf

我必须在它们之间输入带有空格的字符。例如,+ / 8 7 - 9' \ n' (当我按Enter键时) 然后我将它们写成一个字符数组,其中包含以下内容:+ / 89-9。

如何跳过这些空格?

我试着写一些东西,但它不起作用:

char *arr = new char[1000];
char ch;
scanf("%c", &ch);
int i = 0;
arr[0] = ch;
cout << arr[0];
while (ch != '\n') 
{
    //scanf("%c", &ch);
    scanf("%*[ ]%c", &ch);
    cout << (arr[i++] = ch);

}

arr[i++] = '\n';

1 个答案:

答案 0 :(得分:0)

你非常接近

scanf(" %c", &ch);

来自docs

  

空格字符:格式中的任何单个空白字符   string消耗所有可用的连续空白字符   输入(通过在循环中调用isspace来确定)。注意   "\n"" ""\t\t"或其他空格之间没有区别   格式为字符串。

如果你想跳过\n以外的空白字符并继续逐个阅读(需要#include <cctype>):

while (ch != '\n') {
    scanf("%c", &ch);
    if(!isspace(ch)) {
        cout << (arr[i++] = ch);
    }
}