首页 > 编程知识 正文

c语言输入字符串gets,c语言scanf输入多个值

时间:2023-05-06 04:09:35 阅读:172355 作者:1280

除了在定义字符数组时进行初始化外,还可以使用scanf从键盘输入字符串。 试着写一下程序吧。

#includestdio.hintmain(void ) {char str[10]; //str是字符串的缩写,表示字符串printf ('请输入字符串:'); scanf('%s”,str ); /*输入参数是已定义的“字符数组名称”,无需添加。 在c语言中,数组名称表示该数组的起始地址*/printf ('输出结果: %sn ',str )。 返回0; }输出结果如下。

请输入字符串:我爱你一辈子

输出:我爱你一辈子

在scanf中为字符数组赋值与为数字类型数组赋值不同。 如上所述,为数值类型数组赋值时,只能在for循环中逐个赋值,而不能为整个数组赋值。 为字符数组赋值时,可以直接赋值而不使用循环。 此外,通过键盘输入时,系统会自动在末尾添加结束标记“ 0”。 但是,在scanf中输入字符串时有一点需要注意。 如果输入包含空格的字符串,例如" i love you ",则会出现问题。 更改运行上述程序时输入的字符串。

#includestdio.hintmain(void ) {char str[10]; //str是字符串的缩写,表示字符串printf ('请输入字符串:'); scanf('%s”,str ); //输入参数是已定义的字符数组名称printf (输出结果: %sn )、str ); 返回0; }输出结果如下。

请输入字符串: i love you

输出结果: I

可以看到输入了" i love you ",只输出了" I "。 这是因为空格用作输入字符串之间的分隔符。 也就是说,当“敲击”空格时,系统会认为当前字符串已结束,然后输入以下字符串,因此只有空格前面的字符串存储在定义的字符串数组中。

那么,这种情况下该怎么办? 那么,作为空格的分隔符,我会计算有多少个字符串,有多少个字符串以及定义了多少个字符数组。 例如,如果" i love you "有两个空格表示有三个字符串,则定义三个字符数组。

#includestdio.hintmain(void ) {char str1[10]、str2[10]、str3[10]; printf ('请输入字符串:'); scanf('%s%s )、str1、str2和str3); printf ('输出结果: %s%s%s(n ),str1,str2,str3); 在//%s之间加上空格,返回0; }输出结果如下。

请输入字符串: i love you

输出结果: i love you

必须注意的是,正如上面“清空缓冲区”时所述,使用scanf输入时,无论输入什么,最后“敲击”返回都会保留在缓冲区中。 这里也不例外。 输入字符串时,最后一次“敲击”的回车也会保留在缓冲区中,并且如果尝试立即将值赋给字符变量,则会自动退出而不等待输入。 由于换行符生成的字符“ n”会自动分配给字符变量,因此在为字符变量赋值之前必须将缓冲区留空。

转载:

3358 c.biancheng.net/view/232.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。