scanf(“%[^\n]%*c“,str);

scanf("%[^\n]%*c",str);

%[^\n]: \n を除くすべての文字に一致

scanf() 関数が Enter キーを押した後、\n がまだ入力バッファーにある場合は、%*c を使用して入力バッファーに残っている '\n' を吸収し、後続の入力が影響を受けないようにすることができます。

%*c: 文字に一致することを意味します (%c は一致する文字です) が、変数には割り当てられません。 

上記の実装を使用して、スペースに遭遇したときに終了を解決し、scanf() を使用して gets() 関数を完了します

#include <stdio.h>
#pragma warning(disable:4996)

#include <stdio.h>

int main(void)
{
    char str[100];
    int i = 0;
    scanf("%[^\n]%*c",str);

    printf("%s->", str);
    while (str[i] != '\0')
    {
        i++;
    }

    printf("%d", i);
    return 0;
} 

参考記事:

C言語学習ノート - scanf("%*[^\n]%*c"); - 哔哩哔哩

scanf("%[^\n]",str) - Expedition i - ブログガーデン

'\0'、'\n'、および EOF の違い

C言語のgetsとscanfの違い、getsとscanfの違い - プログラマー募集

取得してスキャンする

 

おすすめ

転載: blog.csdn.net/qq_45803449/article/details/127409062