字符串
本文最后更新于136 天前,其中的信息可能已经过时,如有错误请发送邮件至 2641805259@qq.com

1. 基本概念

C 语言中没有独立的字符串类型,字符串以字符数组存储,并以 \0 作为结束标志。debug 调试

char s[6] = "Hello";

此时数组实际长度为 6(包含结束符)。

2. 字符串的定义方式

2.1 字符数组定义

char s[10] = "Hello";

允许修改内容。

2.2 指针方式定义

char *p = "Hello";

指向字符串常量,不可修改内容。

3. 字符串输入输出

3.1 printf

printf("%s", s);

3.2 scanf

scanf("%s", s);

注意 scanf 遇空白即停止,不安全。

3.3 fgets

fgets(s, sizeof(s), stdin);

更安全,能读取空格。

4. 常用库函数(string.h)

4.1 求长度

strlen()

size_t len = strlen(s);

4.2 拷贝

copy

strcpy

strcpy(dest, src);
strncpy(dest, src, n);

4.3 拼接

strcat(dest, src);
strncat(dest, src, n);

4.4 比较

compare

返回值:int

strcmp(a, b);
strncmp(a, b, n);

返回值:0 相等;>0 :a>b;<0 a<b。

大于是字典序关系:

a < b

aa < ab

ba > ab

5. 字符串与内存安全

5.1 缓冲区溢出风险

使用 gets、不检查长度的 strcpy 都会导致溢出,应避免。

5.2 推荐安全替代

  • 输入:fgets
  • 拷贝:strncpy
  • 拼接:strncat

6. 字符串处理示例

示例:统计小写字母数量

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main() {
    char s[100];
    fgets(s, sizeof(s), stdin);

    int count = 0;
    for (int i = 0; s[i] != '\0'; i++) {
        if (islower(s[i])) count++;
    }

    printf("%d", count);
    return 0;
}

7. 总结

  • C 字符串本质是以 \0 结尾的字符数组。
  • 使用库函数必须确保目标空间足够。
  • 指针方式定义的字符串常量不可修改。
  • 输入处理尽量采用安全函数,例如 fgets
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇