不用gets和getchar。
就只用scanf,比如the king of
直接用scanf("%s",str);肯定不好使,只读进了the
而且单词数和每次间隔的空格数也是未知的。不可以采用scanf("%s %s %s",&a,&b,&c);这种形式。
请问有人知道有什么办法实现吗?
C语言里可以只用scanf读入空格吗?
答案:5 悬赏:0
解决时间 2021-11-27 07:28
- 提问者网友:很好的背叛
- 2021-11-26 07:37
最佳答案
- 二级知识专家网友:冷眼_看世界
- 2021-11-26 08:42
char string[100],ch;
int i=0;
do
{
scanf("%c",&ch);
string[i++]=ch;
}
while(ch!='\n');
string[i-1]='\0';
int i=0;
do
{
scanf("%c",&ch);
string[i++]=ch;
}
while(ch!='\n');
string[i-1]='\0';
全部回答
- 1楼网友:而你却相形见绌
- 2021-11-26 11:13
可以。不用系统提供的函数库,自己编一个代替。
- 2楼网友:我叫很个性
- 2021-11-26 10:55
就用getchar吧,scanf中空格就是表示输入下一个字符串,不能读取空格,你说的方式可以分别读取the、king、 of,但读取不到空格
- 3楼网友:伤口狠精致
- 2021-11-26 10:35
不那么方便,因为scanf()读入字符串时会跳过空格、回车,而只有读字符(%c)才读空格和回车,这与getchar()就没区别了。再有就是用%[]格式符,用法自己上网查吧。
可以用下面的方法解决,不过挺麻烦的。
#include
int main()
{
char s[BUFSIZ], c;
while (scanf("%s%*[ \t]", s) == 1) {
printf("s = %s\n", s);
if (scanf("%c", &c) == 1) {
if (c == '\n')
break;
else
ungetc(c, stdin);
}
else
break;
}
return 0;
}
- 4楼网友:转身后的回眸
- 2021-11-26 10:16
用 gets() 就行了,scanf() 有些地方实在是....
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯