C语言博客作业--字符数组

一、概述

在C语言中,字符数组是用来存储一串字符的一种变量类型,也被称为字符串。字符串是C语言中最基本的数据类型之一,常用于用户输入和文件处理等方面。字符串是由一系列字符按照顺序组成的,以'\0'字符表示字符串的结束。

二、字符数组的定义与初始化

在C语言中,我们可以定义一个字符数组来存储一串字符。其定义方式如下:

```c

char str[10];

```

其中,str是字符数组的名称,[10]表示数组的长度,即数组可以存储10个字符。需要注意的是,在C语言中,数组的下标从0开始,因此数组的下标范围为0~9。

字符数组可以用一个字符串来初始化,如下所示:

```c

char str[10] = "hello";

```

这样,数组str中就存储了字符串"hello",其余位置自动填充了'\0'字符,即空字符。需要注意的是,字符数组的长度必须大于等于字符串的长度,否则会导致数据不完整,甚至溢出。

三、字符数组的使用

1. 字符数组的赋值

我们可以直接给字符数组赋值,如下所示:

```c

char str[10];

str[0] = 'h';

str[1] = 'e';

str[2] = 'l';

str[3] = 'l';

str[4] = 'o';

str[5] = '\0';

```

这样,字符数组str中就存储了字符串"hello"。

2. 字符数组的输入输出

我们可以使用scanf函数和printf函数来实现字符数组的输入输出。其中,输入字符串的格式控制符为%s,输出字符串的格式控制符也为%s。如下所示:

```c

char str[10];

scanf("%s", str); // 输入字符串

printf("%s\n", str); // 输出字符串

```

需要注意的是,在使用scanf函数输入字符串时,如果输入的字符串长度大于字符数组的长度,程序会崩溃,因此需要保证输入字符串的长度不大于字符数组的长度。

3. 字符数组的比较

我们可以使用strcmp函数来比较两个字符串是否相等。其函数原型如下:

```c

int strcmp(const char *s1, const char *s2);

```

其中,s1和s2分别为待比较的字符串,如果它们相等,函数返回0,如果s1小于s2,函数返回一个负数,如果s1大于s2,函数返回一个正数。比较时,函数会逐个字符比较两个字符串中相应位置的字符,直到出现不同的字符或者'\0'字符。

4. 字符数组的拼接

我们可以使用strcat函数将两个字符串拼接在一起。其函数原型如下:

```c

char *strcat(char *dest, const char *src);

```

其中,dest为目标字符串,src为需要拼接到目标字符串后面的字符串。函数会将src字符串拼接在dest字符串的末尾,并返回dest字符串的地址。

例如,我们可以将字符串"world"拼接在字符串"hello"后面,如下所示:

```c

char str1[10] = "hello";

char str2[10] = "world";

strcat(str1, str2);

printf("%s\n", str1); // 输出"hello world"

```

需要注意的是,在使用strcat函数拼接字符串时,目标字符串的长度必须足够大,否则可能会导致数据溢出。

四、字符数组的应用实例

1. 判断一个字符串是否是回文字符串

回文字符串是指正着读和倒着读都一样的字符串,比如"level"、"racecar"等。我们可以通过如下方式来判断一个字符串是否是回文字符串:

```c

#include

#include

int main() {

char str[100];

int i, j, len;

scanf("%s", str);

len = strlen(str);

for (i = 0, j = len - 1; i < len / 2; i++, j--) {

if (str[i] != str[j]) {

printf("%s不是回文字符串\n", str);

return 0;

}

}

printf("%s是回文字符串\n", str);

return 0;

}

```

在以上程序中,我们首先使用scanf函数输入一个字符串,然后使用strlen函数获取字符串的长度。接着,我们使用两个下标i和j来分别指向字符串的开头和结尾,每次比较i和j所指向的字符是否相等,如果不相等,则说明该字符串不是回文字符串。

2. 实现简单计算器

我们可以使用字符数组来实现一个简单的计算器,支持加、减、乘、除四种运算。程序如下所示:

```c

#include

#include

int main() {

char optr;

double num1, num2;

char str[100];

scanf("%lf%c%lf", &num1, &optr, &num2);

sprintf(str, "%.2f %c %.2f = ", num1, optr, num2);

switch (optr) {

case '+':

printf("%s%.2f\n", str, num1 + num2);

break;

case '-':

printf("%s%.2f\n", str, num1 - num2);

break;

case '*':

printf("%s%.2f\n", str, num1 * num2);

break;

case '/':

printf("%s%.2f\n", str, num1 / num2);

break;

default:

printf("不支持的运算符\n");

break;

}

return 0;

}

```

在以上程序中,我们先使用scanf函数输入两个操作数和一个运算符,然后使用sprintf函数将该算式转化为字符串并保存在字符数组str中。接着,我们使用switch语句判断运算符类型,执行相应的计算操作,并将结果输出到屏幕上。

需要注意的是,在使用scanf函数输入浮点数类型的操作数时,需要使用%lf格式控制符,以保证输入正确。另外,使用sprintf函数将浮点数转化为字符串时,可以使用%.2f表示保留两位小数。

五、总结

字符数组是C语言中最基本的数据类型之一,也是实现字符串存储和处理的重要工具。在实际应用中,我们可以使用字符数组来实现各种有趣的功能和应用,如文本编辑、游戏、数据处理等。需要注意的是,在使用字符数组时,我们需要特别注意数组的长度和数据的完整性,以避免可能的异常情况。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(65) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部