解决scanf无法完整获取带空格字符串问题

简介: 解决scanf无法完整获取带空格字符串问题

一般情况下我们都会选择用scanf获取字符串,但是当字符串中含有空格时就会出现以下情况

1. #include<stdio.h>
2. int main()
3. {
4.  char arr[10];
5.  scanf("%s",arr);
6.  printf("%s", arr);
7.  return 0;
8. }

我们发现scanf读到空格就结束了,只读了空格前的那部分

为了解决这种问题,我提供两个解决方法

1、用gets()函数获取

gets()函数可以获取带空格的字符串,直到遇到‘\n’结束

1. #include<stdio.h>
2. int main()
3. {
4.  char arr[10];
5.  gets(arr);
6.  printf("%s", arr);
7.  return 0;
8. }

2、用scanf("%[^\n]",arr);

当我们喜欢用scanf获取完整字符串时,就可以用scanf("%[^\n]",arr);,但是这种方法有点麻烦,不推荐使用

#include<stdio.h>
int main()
{
  char arr[10];
  scanf("%[^\n]", arr);
  printf("%s", arr);
  return 0;

7a8e56797727aa79b2a3824f08bdb51c_watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aiB5aiB5rKB5rKB,size_14,color_FFFFFF,t_70,g_se,x_16.png

相关文章
两个getline 输入带空格的字符串
/*两个函数虽然看上去名称相同都是getline,但它们却分属于不同的类中的成员函数。cin.getline(a,20)的getline是输入流对象的成员函数,即istream::getline,使用时需头文件#include getline(cin,s)的getline是string类对象的成员函...
921 0
|
C语言
向字符串添加空格
首先我们可以算出s数组的大小-len,也可以直接得到spaces的大小-即要添加的空格数,那么我们要创建的数组大小是len+spacesSize吗? 不是,应该是len+spacesSize+1,这里的加一是存放一个'\n' 这里呢 我们可以写一个for i循环,用来把s中的元素放到arr里面,然后在外面定义一个falg用来充当arr的下标,存进一个元素falg++,再定义一个j=0,当i == space[j]就存放空格,每存放一个空格++.
83 0
字符串加空格
给定一个字符串,在字符串的每个字符之间都加一个空格。 输出修改后的新字符串。
178 0
|
关系型数据库 Oracle SQL
[20161003]to_char与前导空格.txt
[20161003]to_char与前导空格.txt --昨天做测试时遇到的问题: create table t1 tablespace sugar as select rownum id ,lpad('A',32,'A') name from dual con...
893 0
|
C#
C# 字符串首字符大写
原文:C# 字符串首字符大写 我找到一些把字符串首字符大写的方法。 假如需要把字符串 "red" 转换为 "Red",把 "red house" 转为 "Red house" 或者单词的第一个大写,下面就是我从网上看到的技术。
925 0
|
缓存 C++
C++中cin,getline,cin.getline::如何输入包括空格的字符串
C++中cin,getline,cin.getline::如何输入包括空格的字符串
492 0
实现字符串各个单词首字符大写
<span style="font-family:'Microsoft YaHei UI','Microsoft YaHei',SimSun,'Segoe UI',Tahoma,Helvetica,sans-serif,'Microsoft YaHei',Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif; font-size:10.5
1052 0
【输出亲朋字符串】char字符对应的ASCII码值
【输出亲朋字符串】char字符对应的ASCII码值
164 0
strstr的学习与使用及实现/查找字符串中的字符
strstr的学习与使用及实现/查找字符串中的字符
95 0

热门文章

最新文章