Bootstrap

关于c 语言char类型数组的总结 (csstring库方法)

char a[10]; a="hello";//这种情况容易出现,a虽然是指针,但是它已经指向在堆栈中分配的10个字符空间,现在这个情况a又指向数据区中的hello常量,这里的指针a出现混乱,不允许!

参考百度回答:

https://zhidao.baidu.com/question/744194843059556572.html

使用char类型数组代替string类型, 至于id前的0 可以通过printf格式化输出(%06d  前六位,不足六位用0填充)

而char类型数组的比较是运用 strcmp(a, b) 函数 (位于<string.h>库中 <cstring>)至于char类型数组的赋值也需要注意,不能运用 char a[8], char b[8]; a = b, a已经指向8个空间,不能再指向b的8个空间了,如果要使a 于 b相等 应该使用 strcpy(a, b)(将b的值赋值给a) char类型赋值 最好用 scanf("%s", a); 不需要添加 地址引用符号 a是a[0]元素的地址&a[0]    a + 1就是 a[0] + 1的地址 而 &a是整个a数组的地址; (部分编译器也支持&a这种写法);

 
  • char str[10]; //str是string的缩写, 即字符串
  • printf("请输入字符串:");
  • scanf("%s", str); /*输入参数是已经定义好的“字符数组名”, 不用加&, 因为在C语言中数组名就代表该数组的起始地址*/

 

关于刷题时 用 用scanf() 得到有空格的字符时

cstring 库中的函数:

参考地址:

https://zhidao.baidu.com/question/2012460.html

 %c是会读入回车和空格的 因此想要获strlen(char *str) : 求字符串长度
strcpy(char *dest, char *src) : 把src拷贝到dest
strcat(char *dest, char *src) : 把src连接到dest后面
strcmp(char *s1, char *s2) : 按照各个字符(ascii)比较s1和s2,相等则返回0,否则返回ascii相减的结果
strstr(char *s1, char *s2) : 在s1中查找s2,返回找到的位置,若找不到则返回NULL取输入zi scanf("%d %c %d", &a, &b, &c);

 

定义一个字符默认的长度时:

定义一个字符array[5],a[0]='1'.....a[4]='5'.字符长度是5,但占用的空间却为6个字符,"12345"数组个元素表示如下1 2 3 5 6 \0。一共占了六个空间

 

关于方法中传入char类型数组的参数:

函数定义为void func(char s[10]) 然后调用就可以
也可以直接传char *,然后在程序中按照s[10]操作

如果不定长 可以传指针和size过去
void func(char *s, int len)

参考自:https://zhidao.baidu.com/question/582906199752566765.html

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;