Scanf只读句子中的一个单词 [英] Scanf reads only one word from sentence
本文介绍了Scanf只读句子中的一个单词的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我是C的新手,我有一个小问题。我需要编写一个程序,用户在其中输入文本,程序会显示文本的长度。
我尝试了strlen(),但这不是我想要的。
char a[20];
scanf("%s",a)
如果我键入";Hello world";,结果是5,但我需要11。
我需要使用scanf,但可能无法使用它...
推荐答案
此调用
scanf("%s",a)
填充字符数组a,直到遇到空格。因此,此调用将只读取单词&Hello";,而输入缓冲区仍将保留第二个单词&world";。
您可以使用
char a[20];
scanf("%19[^
]",a );
size_t n = strlen( s );
printf( "%zu
", n );
这里是一个演示程序
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[20] = "";
scanf( "%19[^
]", a );
size_t n = strlen( a );
printf( "%zu: %s
", n, a );
return 0;
}
如果输入
Hello world
则输出为
11: Hello world
或
char a[20];
fgets( a, sizeof( a ), stdin );
a[strcspn( a, "
" )] = ' ';
size_t n = strlen( s );
printf( "%zu
", n );
这里是一个演示程序。
#include <stdio.h>
#include <string.h>
int main(void)
{
char a[20] = "";
fgets( a, sizeof( a ), stdin );
a[strcspn( a, "
" )] = ' ';
size_t n = strlen( a );
printf( "%zu: %s
", n, a );
return 0;
}
如果输入
,请再次输入Hello world
则输出将与上面所示相同
11: Hello world
这篇关于Scanf只读句子中的一个单词的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文