0

C 风格字符串

C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持。字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。

下面的声明和初始化创建了一个 Oldmoon 字符串。
由于在数组的末尾存储了空字符,所以字符数组的大小比单词 Oldmoon 的字符数多一个。

char s1[8] = {'O','l','d','m','o','o','n','\0'};

依据数组初始化规则,您可以把上面的语句写成以下语句:

char s1[] = "Oldmoon";

输入输出方式

在 C 语言中,有函数可以让用户从键盘上输入字符串,它就是:
:: tip 注意

  • scanf():通过格式控制符%s 输入字符串。除了字符串,scanf() 还能输入其他类型的数据。

scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。

::

:: details 输入输出方式 示例代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char s1[30];
    //请输入一个字符串
    scanf("%s",s1);
    printf("s1:%s",s1);
    return 0;
}

运行结果:

```c
输入:
welcome oldmoon↙(表示输入结束)
输出:
s1: welcome

:: tip 分析 使用 scanf 输入,遇到空格就认为当前字符串结束了,所以输入 welcome oldmoon,输出是 welcome。 ::

  • 为了解决上面得问题,我们可以这样修改:

    scanf("%^\n",s) 能解决这个问题,一直读取,直到遇到\n 结束,空格当成普通字符读入。

:: details 输入输出方式 示例代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char s1[30];
    //请输入一个字符串
    scanf("%[^\\n]s",s1);
    printf("s1:%s",s1);
    return 0;
}

运行结果:

输入:
welcome oldmoon↙(表示输入结束)
输出:
s1: welcome oldmoon

:: tip 分析 从输出上可以看出,空格当作普通字符读取了,直到遇到换行,字符串才结束 ::

也可通过 C++中的cin进行输入 :: tip 注意
对于一次 cin 调用,在没有读到非空白字符前它会将遇到的所有空白字符丢弃(不会停止读取),在读到非空白字符之后遇到空白字符 cin 将停止读取。

空白字符:所谓空白符其实就是空格、制表符、换行符的统称

:: details C 风格字符串 示例代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char s4[30];
    //输入一个字符串
    cin >> s4 ;
    cout << s4 << endl;
    return 0;
}

运行结果:

输入一个字符串:welcome oldmmon↙(表示输入结束)
welcome

:: tip 分析 跟 scanf 比较相像,遇到空格即结束,所以输入的 welcome oldmmon,最终输出的 welcome。
一定要多去尝试哦~
::

示例

:: details C 风格字符串 示例代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    char s1[] = "Oldmoon";
    cout << "欢迎来到:" << s1 << endl;
    return 0;
}

运行结果:

欢迎来到:Oldmoon

::

C 风格字符串 相关函数

转义字符

转移字符意义
\a警告声
\b退回
\f换页
\n换行
\r回车
\t水平 Tab
\v垂直 Tab
\\右斜线
'单引号
"双引号
?问号
\0Null

:: details 转义字符 示例代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    printf("You\\nare\\nlearning\\n\\&apos;C++\\&apos; language\\n\\t\\"Do you know C++language\\"");
    return 0;
}

::

上一章
methods
下一章
function