亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C语言字符串完全指南:声明、初始化与输入输出

C语言字符串完全指南

本教程带你掌握C字符串基础:声明、初始化、输入输出、函数用法、指针操作及核心库函数。

在C中,字符串是以空字节 \0 结尾的字符数组。例如:

char c[] = "c string";

编译器自动为字符串字面量追加 \0,使其成为合法C字符串。

C语言字符串完全指南:声明、初始化与输入输出

如何声明字符串?

字符串声明为字符数组。例如:

char s[5];
C语言字符串完全指南:声明、初始化与输入输出

声明可容纳 4 字符加终止符 \0 的缓冲区。


如何初始化字符串?

多种初始化方式:

char c[] = "abcd";
char c[50] = "abcd";
char c[] = {'a', 'b', 'c', 'd', '\0'};
char c[5] = {'a', 'b', 'c', 'd', '\0'};
C语言字符串完全指南:声明、初始化与输入输出

警惕缓冲区溢出:char c[5] = "abcde"; 试图在 5 字节数组存 6 字符(含 \0),应避免。


给字符串赋值

数组声明后不可直接赋值,须用 strcpy():

char c[100];
strcpy(c, "C programming");

注意: 直接赋值 c = "C programming"; 会导致编译错误。


从用户读取字符串

用 scanf() 读取空格分隔的输入:

#include <stdio.h>
int main() {
    char name[20];
    printf("输入姓名: ");
    scanf("%s", name);
    printf("你的姓名是 %s.", name);
    return 0;
}

输出

输入姓名: Dennis Ritchie
你的姓名是 Dennis.

仅捕获首个单词,因 scanf() 遇空白停止。数组名退化为指针,故直接传 name。

如何读取整行?

使用 fgets() 和 puts():

#include <stdio.h>
int main() {
    char name[30];
    printf("输入姓名: ");
    fgets(name, sizeof(name), stdin);
    printf("姓名: ");
    puts(name);
    return 0;
}

输出

输入姓名: Tom Hanks
姓名: Tom Hanks

fgets() 读取最多 sizeof(name)-1 字符(含空格),保留末尾换行,puts() 会打印它。

注意: gets() 已废弃并从C标准移除,因其可导致缓冲区溢出。


传递字符串给函数

字符串像数组一样传递给函数。示例:

#include <stdio.h>
void displayString(char str[]);
int main() {
    char str[50];
    printf("输入字符串: ");
    fgets(str, sizeof(str), stdin);
    displayString(str);
    return 0;
}
void displayString(char str[]) {
    printf("字符串输出: ");
    puts(str);
}

字符串与指针

字符串名退化为指针,支持指针算术:

#include <stdio.h>
int main(void) {
    char name[] = "Harry Potter";
    printf("%c", *name); // H
    printf("%c", *(name+1)); // a
    printf("%c", *(name+7)); // o
    char *namePtr = name;
    printf("%c", *namePtr); // H
    printf("%c", *(namePtr+1)); // a
    printf("%c", *(namePtr+7)); // o
}

常用字符串函数


C语言

  1. 掌握 C# 字符串:基础、操作与进阶技巧完全指南
  2. 掌握 C# 命名空间:代码组织、作用域与最佳实践
  3. C++数组传递给函数实战指南
  4. C 语言运算符完全指南:算术、关系、逻辑、位运算等
  5. C 语言用户自定义函数四大模式对比:参数与返回值的设计权衡
  6. C++ 字符串函数实战:strcpy、strcat、strlen、strcmp 详解与示例
  7. C 语言字符串完全指南:声明、输入输出与库函数详解
  8. C 语言编程入门:全面教程指南
  9. Python 字符串操作完全指南:替换、连接、分割、反转、大小写转换
  10. 精通 Java 字符串:创建、方法与最佳实践
  11. 精通 Java 枚举字符串表示:默认行为、toString 重写与进阶模式
  12. Java Strings 类:掌握字符串创建与操作