C语言-字符串(单个字符)和字符数组

Posted renren-study-notes

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言-字符串(单个字符)和字符数组相关的知识,希望对你有一定的参考价值。

.字符串(单个字符)和字符数组的定义

1.单个字符的定义

char i = ‘x’ (单个字符的定义)

字符串创建后为常量无法修改

2.字符数组的定义

char i [4]=”xxxx”;

char i []=”xxxx”;

char i [4]=‘x’’x’’x’’x’;

其中定义的数组的元素数要比实际赋值的数量多一,用于存放\0位置

字符数组只有在定义时才能将整个字符串一次性地赋值给它,一旦定义完了,就只能一个字符一个字符地赋值了。

二字符串(单个字符)和字符数组输入

1.scanf函数

给字符串(单个字符)赋值

scanf(“%2s”, &x);(其中x为定义的char类型变量的名字)

给字符数组赋值

scanf(“%2s”, x);(其中x为定义的字符数组名字)

 2.fgets函数

char food[5];

printf("Enter favorite food:");

fgets(food, sizeof(food), stdin);

fegets括号里面内容的意思:food(字符数组的名字)sizeof(food)接收字符的最大长度,stdin数据来自键盘

scanf比较,此函数可以让用户输入含有空格的字符串

三. 字符串(单个字符)和字符数组的输出

1.单个字符的输出

Printf (“%c”,  x);对单个字符进行输出

Xchar类型变量的名字

2.字符数组的输出

Printf(“%s, x;对字符串进行输出

X为字符数组名

四.字符数组与指针之间一些注意事项

第一:

char cards[];
在这个表达式中 cards是一个字符数组,而且必须立刻赋值
#include <stdio.h>

void stack_deck(char cards[])


printf("%s\n", cards);


int main(void)


char cook[]="Hello world!";
stack_deck(cook);
return 0;

在这个表达式中cards[]是char类型函数的指针变量,他存放了cook数组的首字节地址。
将函数中的char cards[]更换为指针变量(char * cards)同样有效
 

第二:

char s[] ="xxxx";
char * t = s;

字符数组变量赋值给指针时,指针变量只会包含数组的地址信息,而丢失了数组的长度信息,这个信息的丢失称为指针退化。

 

以上是关于C语言-字符串(单个字符)和字符数组的主要内容,如果未能解决你的问题,请参考以下文章

C语言中啥是“字符”、“字符串”?有啥区别?

c语言输出字符串数组出现乱码

C语言比较字符串大小

C语言更改字符串中的某一位

c语言程序 输入一字符串存入数组中,逆序存放并输出

C语言中字符型和字符串型的区别?