如何从stdin中获取在C中具有前导空格的字符串输入?

问题描述 投票:0回答:2

需要一种使输入字符串以空格开头的解决方案吗?

我知道一种在输入中包含空格的方法

scanf("%[^\n]s", s);

但是它仅适用于单词之间的间隔。我需要一个以空格开头的字符串的解决方案。而且我还需要变量中的起始空格

c string input whitespace stdin
2个回答
0
投票

尝试一下。输入exit退出程序。它为我接受了领导空间。扫描集%99[^\n]最多可以将99个字符扫描到s[100]或换行符中。如果要扫描的下一个字符是换行符,则扫描集将失败。换行符将保留在输入流中。 while ( '\n' != getchar ( )) {}将读取并丢弃超过99个字符和换行符的任何字符。删除换行符后,可以输入前导空格。可能存在使用scanf%s的先前的%d,...这样的scanf可能在输入流中留下换行符,从而导致scanset失败。

#include <stdio.h>
#include <string.h>

int main ( void) {
    char s[100] = "";
    int result = 0;

    while ( 1) {
        printf ( "enter line of text (exit)\n");
        result = scanf ( "%99[^\n]", s);
        if ( EOF == result) {
            break;
        }
        while ( '\n' != getchar ( )) {}
        if ( ! strcmp ( "exit", s)) {
            break;
        }
        if ( 1 == result) {
            printf ( "entered text is: %s\n", s);
        }
    }

    return 0;
}

0
投票

使用gets(s);希望它会对您有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.