开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第29天,点击查看活动详情
char*是字符串?
字符串可以表达为char*的形式;
char*不一定是字符串;
本意是指向字符的指针,可能指向的是字符的数组(就像int*一样);
只有它所指的字符数组有结尾的0,才能说它所指的是字符串。
字符串输入输出
字符串赋值?
char *t="title";
char*s;
s=t;
并没有产生新的字符串,只是让指针s指向了t所指的字符串,对s的任何操作就是对t做的。
字符串输入输出
char string[8];
scanf("%s",string);
printf("%s",string);
scanf读入一个单词(到空格、tab或回车为止)
scanf是不安全的,因为不知道要读入的内容的长度。
安全的输入
char string[8];
scanf("%7s",string);
在%和s之间的数字表示最多允许读入的字符的数量,这个数字应该比数组的大小小一,
输入多出来的内容会被下一次的scanf读入,或者丢弃。
常见错误
char *string;
scanf("%s",string);(这两句是错误的)
以为char*是字符串类型,定义了一个字符串类型的变量string就可以直接用了;
由于没有对string初始化为0,所以不一定每一次运行都出错。
空字符串
char buffer[100]="";
这是一个空的字符串,buffer[0]=='\0'
char buffer[]="";
这个数组的长度只有1。
字符串数组
char ** a,a是一个指针,指向另一个指针,那个指针指向一个字符(串);
char a[][],但是在写程序时第二个[]中必须有具体的值;
char *a[];类似于char a[][]
char a[][10]与char *a[]
char a[][10]:(在输入时长度不可超过9)
char *a[]:
程序参数
int main(int argc,char const *argv[])(main函数的参数,一个整数和一个字符串数组,整数的大小是字符串数组中字符串的个数)
argv[0]是命令本身,当使用Unix的符号链接时,反应符号链接的名字。