C语言字符串的输入和输出
字符串的输入和输出
%c 人为加入\0进行输入输出
%s 直接输入输出
*输入输出字符串时字符数组应有足够的存储空间,指针变量作为输入项时,指针必须已经指向确切的、足够大的存储空间
%s的使用
scanf("%s",地址值)
地址值:字符数组名、字符指针、字符数组元素的地址
例:
char str[15];
scanf("%s",str);
abc 123
1.不读入空格和回车,从空格处结束
2.输入字符串长度超过字符数组元素个数,不报错
3.当输入项为字符指针时,指针必须已指向确定的有足够空间的连续存储单元
4.当为数组元素地址时,从此元素地址开始存放
printf("%s",地址值)
输出时遇到第一个"\0"为止
gets和puts函数
开头必须stdio.h
#include "stdio.h"
1.gets(地址值)
地址值:字符数组名、字符指针、字符数组元素的地址
例:
char str[10];
gets(str);
包括空格符
2.puts(字符串起始地址)
遇第一个"\0"结束,自动加入换行符
字符串数组:数组中每个元素都是一个存放字符串的数组
可以将一个二维数组看作是字符串数组
char ca[3][5]={"A","BB","CCC"};
A \0
B B \0
C C C \0
字符型指针数组
char *pa[3]={"a","bb","ccc"};
pa[0] pa[1] pa[2]
可以重新赋值 gets(pa[2]);
pa[2]中的地址未变,仍指向具有4个元素的无名字符数组,只能在一行上输入包含3个字符的字符串
*(pa[2]+1)、pa[2][1]、等形式引用pa数组所指字符串的字符
字符串处理的函数
以string.h开头
1.字符串复制 strcpy(s1,s2)
s2复制到s1 s1空间要足够大
2.字符串连接 strcat(s1,s2)
s2连接到s1 覆盖s1后的"\0" s1足够大
3.求字符串长度 strlen(s) 不包括"\0"
4.字符串比较 strcmp(s1,s2)
s1>s2 返回正数
s1==s2 返回0
s1<s2 返回负数
abc123 abc234