C语言中处理字符串输出

在C语言中没有字符串类型(String),也没有字符串变量.

字符串是存放在字符型数组中的

用来存放字符数据的数组叫字符数组。

在字符数组中的一个元素内存放一个字符。

例如:

char a[12];

a[0]='I',a[1]=' ',a[2]='a',a[3]='m',a[4]=' ',a[5]='s',

a[6]='t',a[7]='u',a[8]='d',a[9]='e',a[10]='n',

a[11]='t',

以上定义了a为字符数组,包含11个元素。赋值以后数组的状态如图所示:

I a m s t u d e n t

其中没有字符的空表示输入的‘空格


介绍完字符数组,在实际运用中需要用到这个该怎么使用呢?

初始化字符数组

最容易理解的方式就是“初始化列表”,把各个字符依次赋给数组中的各元素。

例如:

char a[12]={'I',' ','a','m',' ','s','t','u','d','e','n','t'}

把12个字符依次赋给a[0]-a[11]这12个元素。

如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。

例如:

char a[ ]={'I',' ','a','m',' ','s','t','u','d','e','n','t'}

这里等同于上面的a[12]


这里简单介绍几种比较常用的输出字符数组的方式

第一种

char a[ ]={'I',' ','a','m',' ','s','t','u','d','e','n','t'}

我们最开始的根据字符一个一个的放入到字符数组中

然后用for循环将数组中的字符一个个遍历打印出来

例如:

char a [ ] = { 'I',' ','a','m',' ','s','t','u','d','e','n','t' };
    for ( int i = 0; i < 12; i++ ) {
        printf( "%c", a [ i ] );
    }

第二种

可以直接省略花括号的方式,直接写成

char b [ ] = "I am student"

然后用for循环将数组中的字符一个个遍历打印出来

例如:

char b [ ] = "I am student";
    for ( int i = 0; i < 13;i++ ) {
        printf( "%c", b[ i ] );
    }

这里不像第一种那样用单个字符作为字符数组的初值,

而是用一个字符串(注意字符串的两端是用双撇号""而不是单撇号'')作为初值。

显然这种方法直观、方便、符合人们的习惯

请注意此时的数组b长度已经不是12了,而是13。

因为字符串常量的最后由系统加上一个'\0'。

注意:C系统在用字符数组存储字符串常量时会自动加一个'\0'作为结束符

上面的初始化与下面的初始化等价:

char b [ ] = { 'I',' ','a','m',' ','s','t','u','d','e','n','t' ,'\0'};

而不与第一种等价,这么说会更好理解一些。

前者的长度为12,后者的长度为13.

第三种

这种调用起来会比较方便,不需要用for循环遍历,可以直接用printf语句输出

例如:

char c [ ] = { "I am student" };
    printf( "%s",c);

这个就直接调用数组c这个对象进行输出。

而%s是用来输出字符串的格式符

 printf( "%s",c);

实际上系统是这样执行的:

按字符数组名c找到其数组的第一个元素的地址,然后逐个输出其中的字符,

直到遇到'\0'(结束符)为止。

用%s输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。

写成下面这样是不对的:

printf( "%s",c[0]);


#include
int main( ) {
	//第一种
	char a [ ] = { 'I',' ','a','m',' ','s','t','u','d','e','n','t' };
	for ( int i = 0; i < 12; i++ ) {
		printf( "%c", a [ i ] );
	}
	printf( "\n" );
	printf( "===================\n" );

	//第二种
	char b [ ] = "I am student";
	for ( int i = 0; i < 13;i++ ) {
		printf( "%c", b[ i ] );
	}
	printf( "\n" );
	printf( "===================\n" );

	//第三种
	char c [ ] = { "I am student" };
	printf( "%s\n",c);
	printf( "===================\n" );

	
	return 0;
}

以下是三种方式的输出效果:

C语言中处理字符串输出_第1张图片


总结:

这里是我本人的理解,如果有不对的地方,欢迎指正!

你可能感兴趣的:(C语言,个人心得积累,c语言)