1.
A)字符串输入
1)gets()函数读取整行输入,直至遇到换行符,然后丢弃换行符,储存其余字符,并在这些字符的末尾添加一个空字符使其成为一个C字符串
例:
char words[length];
gets(words); //但是如果输入的字符串长度大于length,会导致缓冲区溢出
2)fgets(words,length,stdin<表示从键盘输入>)函数通过第二个参数限制读入的字符数来解决溢出问题,如果输入过多,会截取length大小的那一段;如果输入中遇到换行符,会把它储存在字符串中
fgets()函数返回char的指针,如果函数读到文件结尾,他将返回一个特殊的指针:空指针
fputs(words,stdout)函数用于显示输出,并且不在字符串末尾添加换行符
例:
char words[length];
fgets(words,length,stdin);
fputs(words,stdout);
3)gets_s()函数只从标准输入中读取输入,并在在读到换行符会丢弃它而不是存储它
4)s_gets()
示例代码:
char * s_gets(char * st,int n)
{
char * ret_val;//最后返回的字符串
int i = 0;
ret_val = fgets(st,n,stdin);
if(ret_val)//即 ret_val!=null
{
while(st[i] != '\n' && st[i] != '\0')
i++;
if(st[i] == '\n')
st[i] = '\0';//将是换行符的地方变成空字符
else
while(getchar() != '\n') //抛弃换行符
continue;
}
return ret_val;
}
5)scanf()函数:更像是“获取单词”函数,而不是“获取字符串”函数
B)字符串输出
1)puts()函数只显示字符串,而且自动在显示的字符串末尾加上换行符,在遇到空字符时就停止输出
例:puts("hello world.");
2)fputs(words,stdout)函数用于显示输出,并且不在字符串末尾添加换行符
例:
char words[length];
fgets(words,length,stdin);
fputs(words,stdout);
3)printf()函数不会自动在每个字符串末尾加上一个换行符
2.如果要在字符串内部使用双引号,必须在双引号前面加上一个反斜杠(\)
3.字符串常量属于静态存储类别,这说明如果在函数中使用字符串常量,该字符串只会被储存一次,在整个程序的生命期内存在,即使
函数被调用多次。用双引号括起来的内容被视为指向该字符串储存位置的指针。
4.初始化数组把静态存储区的字符串拷贝到数组中,而初始化指针只把字符串的地址拷贝给指针
5.字符串函数
1)strlen()函数用于统计字符串的长度
2)strcat()函数用于拼接字符串
3)strncat()函数指定了最大添加字符数
4)strcmp()函数用于字符串比较
5)strncmp()函数可以比较到第三个参数指定的字符数
6)strcpy()函数相当于是字符串赋值运算符
7)strncpy()函数可以指明可拷贝的最大字符数
8)sprintf()函数把数据写入字符串,而不是打印在显示器上
6.声明数组将分配存储数据的空间,声明指针只分配储存一个地址的空间
网友评论