网站首页 > 技术文章 正文
1 字符数组概述
C语言中没有字符串这种数据类型,可以通过char的数组来替代。数字0(和字符 '\0' 等价)结尾的char数组就是一个字符串,字符串是一种特殊的char的数组。
#include <stdio.h>
int main()
{
char c1[] = {'c', ' ', 'p', 'r', 'o', 'g'}; // 普通字符数组
printf("c1 = %s\n", c1); // 有可能乱码,因为没有'\0'结束符
// 以'\0'('\0'就是数字0)结尾的字符数组是字符串
char c2[] = {'c', ' ', 'p', 'r', 'o', 'g', '\0'};
printf("c2 = %s\n", c2);
// 字符串处理以'\0'(数字0)作为结束符,后面的'h', 'l', 'l', 'e', 'o'不会输出
char c3[] = {'c', ' ', 'p', 'r', 'o', 'g', '\0', 'h', 'l', 'l', 'e', 'o', '\0'};
printf("c3 = %s\n", c3);
// 使用字符串初始化,编译器自动在后面补0,常用
char c4[] = "c prog";
printf("c4 = %s\n", c4);
return 0;
}
注意,如果char数组没有以数字0结尾,那么就不是一个字符串,只是普通字符数组。
2 字符数组初始化
- 直接初始化
char str[] = "Hello, World!";
char str[] = {'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!', '\0'};
- memset函数
// memset函数放在string.h文件
// void *memset(void *s, int ch, size_t n);
char str[256];
memset(str, 0, 256);
3 字符串的输入输出
由于字符串采用了'\0'标志,字符串的输入输出将变得简单方便。
字符串的输入方法:
// 通过格式控制符%s输入字符串。除了字符串,scanf() 还能输入其他类型的数据。
char str[128];
scanf("%s", str);
// 直接输入字符串,并且只能输入字符串。
char str[128];
gets(str);
注意,scanf() 和 gets() 是有区别的:
- scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。
- gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。换句话说,gets() 用来读取一整行字符串。
#include <stdio.h>
int main()
{
char str1[30] = {0};
char str2[30] = {0};
char str3[30] = {0};
//gets() 用法
printf("Input a string: ");
// 输入字符串str1带空格
gets(str1);
//scanf() 用法
printf("Input a string: ");
// 输入字符串str2不带空格
scanf("%s", str2);
// 输入字符串str3带空格
scanf("%s", str3);
printf("\nstr1: %s\n", str1);
printf("str2: %s\n", str2);
printf("str3: %s\n", str3);
return 0;
}
字符串的输出方法:
// 输出字符串并自动换行,该函数只能输出字符串
char str[128];
puts(str);
// 通过格式控制符%s输出字符串,不能自动换行。除了字符串,printf() 还能输出其他类型的数据
char str[128];
printf(str);
代码示例:
#include <stdio.h>
int main()
{
char website[] = "www.whccf.cn";
printf("%s\n", website);
puts(website);
return 0;
}
---E N D---
喜欢的记得关注哦!
您的支持是我们前进的动力!
- 上一篇: 菊花厂学姐教C语言之volatile(c语言 花)
- 下一篇: C语言结构体成员赋值的深拷贝与浅拷贝
猜你喜欢
- 2024-09-12 c++ printf 到 std::cout(c++怎么用printf输出整数)
- 2024-09-12 C 语言未初始化的局部变量是多少?
- 2024-09-12 大话C语言:函数(c语言函数视频讲解)
- 2024-09-12 每日一题||C语言刷题(c语言刷题网)
- 2024-09-12 大话C语言:逗号运算符及运算法优先级
- 2024-09-12 C语言学习篇(14)-----sizeof运算符
- 2024-09-12 C语言 include的用法(c语言include的用法与搭配)
- 2024-09-12 C语言的位运算基本操作演示(c语言位运算的运算规则)
- 2024-09-12 编写一个C程序,输入a,b,c三个值,输出其中最大值
- 2024-09-12 C语言如何实现大数相加(c语言大数相加思路)
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)