字符串定义
字符串一共有4种不同的定义方式,分别是:
- 字符串常量方式:位于双引号中的任意字符,但并不包括
\0
,\0
由编译器自动添加。 - char指针方式
- 字符串数组方式
分别举例如下:
#!c
char m1[50] = "Hello, and how are you today!"; //字符串常量
char *m2 ="Hello, and how are you today!"; //char 指针方式*
char *mytal[LIM] = {"Adding numbers swiftly",
"Multipying arrurately","Stashing data",
"Following instructions to the letter",
"Understanding the C language"
}; //字符串数组方式*
1、3两种方式定义字符串时,是从静态存储区将整个字符串复制到数组中去;而对于第二种指针赋值的方式,则只是复制字符串的地址。在这种情况下,字符串存储在静态数据区,不应该也不能被修改。
字符串输入
一共有三种不同的字符串输入函数:
scanf()
: 最常用的输入函数,可以高度定制输入格式。gets()
: 从系统标准输入设备获得一个字符串,读取字符串遇到\n
时,结束读取,并且会丢弃最后一个\n
字符。将一个地址作为参数,同时返回这个地址。这个函数不检查预留存储区是否能够容纳实际输入的数据。fgets()
: 类似与gets()
,但是提供第二个参数n
,用于说明最大读入字符数。fgets()
会读取最多n-1
个字符或者读完一个换行符位置,由这二者最先满足的那个结束输入。
字符串输出
一共有三种不同的字符串输出函数:
printf()
: 最常用的输出函数,可以控制各种各样的输出格式。puts()
: 自动添加换行符,遇到空字符时才会停止。fputs
: 是puts
的面向文件的版本,fputs()
的第二个参数用来说明要写的文件,但是它并不会自动添加换行符。
总结
-
gets()
会分别丢掉输入里的换行符,而puts()
会为输出自动添加换行符。 -
fgets()
直接存储输入里的换行符,不会丢弃;而fputs()
也不会自动为输出添加换行符。