如:
char str[50] = "I ""am ""a " "student";
char str1[50] = "I am a student";
它们是相等的。
#include
#define MAX 81
int main()
{
char name[MAX] = {0};
char *ptr = NULL;
printf("Hi,what's your name?\n");
ptr = gets(name);
printf("Nice name,%s\n",ptr);
return 0;
}
name1.c:17:5: warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638) [-Wdeprecated-declarations]
ptr = gets(name);
^
/tmp/ccM1miiP.o: In function `main':
name1.c:(.text+0x3f): warning: the `gets' function is dangerous and should not be used.
char *fgets(char *s, int size, FILE *stream);
把stream 改为stdin,标准输入就可以在键盘里获取东西了。
ptr = fgets(name,100,stdin);
char *strcpy(char *dest, const char *src);
功能:把src所指由'\0'结束的字符串复制到dest所指的数组中。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。
注意:当src串长度>dest串长度时,程序仍会将整个src串复制到dest区域,可是dest数组已发生溢出。因此会导致dest栈空间溢出以致产生崩溃异常。如果不考虑src串的完整性,可以把dest数组最后一元素置为NULL,从dest串长度处插入NULL截取字串。
char * strncpy(char *dest, char *src, size_t n);
功能:将字符串src中最多n个字符复制到字符数组dest中(它并不像strcpy一样遇到NULL才停止复制,而是等凑够n个字符才开始复制),返回指向dest的指针。
说明:如果n > dest串长度,dest栈空间溢出产生崩溃异常。
否则: 1)src串长度<=dest串长度,(这里的串长度包含串尾NULL字符) ,如果n=(0, src串长度),src的前n个字符复制到dest中。但是由于没有NULL字符,所以直接访问dest串会发生栈溢出的异常情况。 如果n = src串长度,与strcpy一致。如果n = dest串长度,[0,src串长度]处存放于desk字串,(src串长度, dest串长度]处存放NULL。
2)src串长度>dest串长度 ,如果n =dest串长度,则dest串没有NULL字符,会导致输出会有乱码。如果不考虑src串复制完整性,可以将dest最后一字符置为NULL。
char * strcat ( char * dest, const char * src );
src指向的字符串被复制到dest指向的字符串的结尾,复制过来的src所指字符串的第一个字符覆盖了dest所指字符串结尾的空字符。返回值为dest.
char *strncat(char *dest, const char *src, size_t n);
src字符串中只有前n个字符被追加到dest字符串,复制过来的src字符串的第一个字符覆盖了dest字符串结尾的空字符,src字符串中的空字符及其后的任何字符都不会被复制,并且追加到一个空字符到所得结果后面。返回值是dest.
int strcmp(const char *s1, const char *s2);
如果s1字符串在机器编码顺序中落后于s2字符串,函数的返回值是一个正数;如果两个字符相同,返回值为0;如果第一个字符串在机器编码顺序中先于第二个字符串,返回值是一个负数。
int strncmp(const char *s1, const char *s2, size_t n);
改函数的作用与strcmp()一样,只是比较n个字符后或者遇见第一个空字符时会停止比较,由二者中最先被满足的那一个条件终止比较过程。