C语言程序设计(25)

112 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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)

image.png

char *a[]:

image.png

程序参数

int main(int argc,char const *argv[])(main函数的参数,一个整数和一个字符串数组,整数的大小是字符串数组中字符串的个数)

argv[0]是命令本身,当使用Unix的符号链接时,反应符号链接的名字。