概述
用 print 函数和 puts 函数写字符串
- printf 函数遇到空字符才停止(如果空字符丢失,则会越过字符串末尾继续写,直到内存某个地方找到空字符)
- puts 函数只需要一个参数,即需要显示的字符串,且总会在结尾添加一个额外的换行符
例如:
char str[] = "Xing Baby Alliance Crown King";
puts(str);
printf("%s",str);
return 0;
/*输出结果
Xing Baby Alliance Crown King
Xing Baby Alliance Crown King
*/
用 scanf 函数和 gets 函数读字符串
- scanf 函数会跳过空格符,然后读取字符存入数组,直到遇到空格符、换行字符或制表符为止,在字符串末尾存储一个空字符
- gets 函数不会在读字符串之前跳过空格符,且会持续读取直到遇到换行符,但并不会把它存入字符数组,而是换成空字符存储
例如:
char str[30];
scanf("%s",str);
puts(str);
/*
输入:
Xing Baby Alliance Crown King
输出:
Xing
*/
char str[30];
gets(str);
puts(str);
/*
输入:
Xing Baby Alliance Crown King
输出:
Xing Baby Alliance Crown King
*/
由于 scanf 函数和 gets 函数都无法检测数组何时被填满,具有越界风险,C程序员常自己编写输入函数
例如:不跳过空格符,读取字符直到遇到换行符为止,返回有效字符数的自定义 read_line 函数
int read_line( char str[] , int n )
{//字符数组名str, 能容纳字符数最大值n
int ch , i = 0;
while( ch = getchar() != 'n' )
if( i < n )
str[i++] = ch;
str[i] = '