C语言中字符串的三种形式
(1) 字面值字符串 存储在代码区 代码区不能修改
在程序中用双引号("")引起来的内容
a.字面值字符串里面的字符不可修改
b.相同字面值字符串在内存中只保留一份
(2) 字符数组的形式 存储在栈区 栈区可以修改
注意:
a.保留足够的空间用于存储'\0'
b.字符数组可以直接用 字符串字面值 直接初始化
char s1[] = "Hello" 数组长度为6
char s2[] = {'H','e','l','l','o'};数组长度为5
(3) 字符指针 保存一个字符串的首地址
char *
字符指针 可以是 字面值字符串的 地址
也可以是 字符字符数组的地址
字符串操作函数:
size_t strlen(const char *s); // sizeof()
char *strcpy(char *dest,const char *src);
char *strncpy(char *dest,const char *src,size_t n);
char *strcat(char *dest,const char *src);
char *strncat(char *dest,const char *src,size_t n);
int strcmp(const char *s1,const char *s2);
int strncmp(const char *s1,const char *s2,size_t n);
void *memcpy(void *dest,const void *src,size_t n);
int atoi(const char *str);
scanf("% *[^\n]");
%* 任意字符忽略 [^\n] 除换行以外
scanf("%*c"); %*c 读取一个任意字符并且忽略