简介:
c语言的字符串其实就是一个以空字符(\0)结尾的char数组。一般我们初始化一个字符串如下:
char str[]="hello world";
char *s="hello world";
一般说来,上述两种声明字符串没有太大的区别。但一些细微的区别还是有的。
首先“hello world”是一个常量字符串,整个引号的内容是作为指向该字符串存储位置的指针。在程序运行的时候,str[]是将静态存储区中的字符串复制一份到程序的数据段中。而对于指针s,则是将静态存储区的地址复制到s.
其次,str是一个地址常量,我们可以用str+1来表示下一个元素,但是不可以用++str,因为str是常量。而s则是变量,可以用++s来访问字符串中的元素。
一般 char *str="hello‘;
char *copy=str; 其实这并不是真正的拷贝,只是将str指向的“hello"所存的真正的地址复制给copy,并没有实现字符串真正的复制,两者指向的地址相同而已。要真正实现字符串的复制,需要用到strcpy()或者strncpy().
字符串输入:
c库提供三个读取字符串函数,为scanf(),gets(),fgets();
gets从系统的标准输入设备(通常是键盘)获得一个字符串,字符串没有预定的长度,所以gets需要知道何时结束。在读取字符串时遇到换行符,它读取换行符之前(不包括换行符)的所有字符。在这些字符后加一个空字符(\0),把字符传交给调用它的程序。再读取换行符并丢弃。如果出错和到达文件末尾,返回NULL。
函数原型 char *gets(char *s),将读取到的字符串存在s中。
char *fgets(char *buf, int bufsize, FILE *stream)
bufsiz说明最大的读入字符数,最多读取bufsiz-1个字符到buf中,或者遇到换行符为止。stream为流,从键盘输入可以用stdin。读取到的字符串存储在buf中,注意,与gets不同,它将读到的换行符不丢弃。函数调用成功返回buf,失败或者读到文件结尾返回NULL。故也不能用NULL表示是否出错。
int fscanf(FILE *file,const char * format,[argument])
format为格式字符串。它与fgets的差别在于它遇到空格和换行符结束。注意,它是遇到空格也结束,而fgets是遇到换行符才结束。返回值:成功返回读入参数的个数,其实就是1.失败返回-1.
字符串输出:
c库提供三个输出字符串的函数,为printf(),puts(),fputs()
int puts(char *str)
将str字符串输出到stdout,它会自动在后面添加换行符,注意它只有遇到空字符才会停下来。
int fputs(str,fp)
从文件fp中读取字符串存入str中。它不会添加换行符。
注意gets和puts配对,因为gets每次丢弃换行符,puts每次又加入换行符。fgets和fputs配对.
int fprintf(FILE *file,const char* format,[argument])
按格式输出字符串到file中,返回输出字符的个数,出错返回负数。
字符串函数:
strlen()
unsigned int strlen(char *s)
在读取到‘\0’时字符串的长度。
strcat()
char *strcat(char *dest,char *src)
将源字符串拷贝到目的字符串后面,但是源字符串不变。返回的是dest的首地址,当然dest串也改变了,但是它并不检查 第一个字符串是否有足够的空间容纳两元素之和。用strncat可以指定最多复制的个数,避免目的串没有空间容纳。
strcmp()
int strcmp(const char* s1,const char* s2)
比较两个字符串是否相等,相等返回0.
strcpy()
char *strcpy(char*
dest, const char *src)
将src中的字符串复制到dest中
使用strncpy更加安全
char*strncpy(char*dest,char*src,size_tn)
一般设置的n比dest的长度少1,自己手动在dest[n]='\0',防止字符串未以‘\0’结束。
int sprintf( char *buffer, const char *format, [ argument] … )
作用于printf类似,只是它写到字符串而不是输出显示。
<span style="font-size:14px;">char name[]="hu";
char aa[]="hello";
char buf[BUFSIZ];
sprintf(buf,"%s, %s",name,aa);</span>
fprintf()
int fprintf (FILE* stream, const
char*format, [argument])
将字符串以一定的格式输出到文件中。
791

被折叠的 条评论
为什么被折叠?



