先来学习字符数组
鄠邑网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联从2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。定义
char 数组名[元素个数]
例子
char ch[5];
在内存中的表现形式
可以看出定义了但是里面的值是不确定的
现在进行初始化
char ch[5]={'h','e','l','l','o'};
此时内存显示为
如果我们定义了一个数组为char [7],但是不完全初初始化,则后面补\0
char sh[7]=['h','e','l','l','o']
此时在内存中表现为
接下来看字符数组的输入和输出
输入
char ch[10] = "hello";
int i;
for (i = 0; i< 10; i++)
{
sncaf("%s", &ch[i]); //也可以使用ch[i]=getchar();
}
输出
char ch[10];
int i;
for (i = 0; i< 10; i++)
{
printf("%c", ch[i]);
}
举个例子练习:输入一串字符全部全换为大写
#includeint main()
{
char ch[20]; //存放字符
int i;
for (i = 0; i< 20; i++) //循环输入 字符
{
ch[i] = getchar();
if (ch[i] >= 'a' && ch[i]<= 'z') //每次输入一个字符就进行判断
{
ch[i] = ch[i] - 32; //如果输入的字符不是小写字符,则改变为小写字符
}
}
for (i = 0; i< 20; i++)
{
printf("%c", ch[i]);
}
return 0;
}
第二部分:字符串
1.字符串的概念个初始化
定义一个字符串
char ch[7]="hello";
等价于
char ch[7]=['h','e','l','l','o','\0','\0']
字符串在内存中的存储和字符数组一样就是结尾会有结束标志\0,也可以用看出结束标志在内存中是占据空间的
char ch1[5] = { 'h','e','l','l','o' }; //占据5个字节
char ch2[] = "hello"; //占据6个字节
输入输出可以用
gets(ch);
scanf("%s", ch);
printf("%s", ch);
puts(ch)
三个函数,这里不再赘述
现在来看字符串的相关函数
首先这些函数包含在string.h头文件中
1.strcat():将两个字符串连接起来
调用格式
strcat(字符数组,字符串);
例子
char ch1[10] = "hello";
char ch2[10] = "world";
strcat(ch1, ch2);
printf("%s", ch2); //helloworld
使用这个函数时,后面一个字符数组的首元素会覆盖前一个的结束标识符,前一个字符数组要足够大,不然会出现越界问题报错,所以前一个字符必须先定义初始化后再使用,后面一个可以是一个字符数组,也可以是一个字符串常量
不用scrcat()函数实现两个字符粗的连接
char str1[20] = "hello";
char str2[20] = " world";
int i, j,k;
for (i = 0; str1[i] != '\0'; i++);
for (j = 0; str2[j] != '\0'; j++);
for (k = 0; k< j; k++)
{
str1[i + k] = str2[k];
}
str1[i + k] = 0;
printf("%s", str1);
2.strncat()再字符串后面追加指定的字符个数
strncat(字符数组,字符串,n);
例如
char str1[10] = "hello";
char str2[10] = "world";
strncat(str1, str2, 2); //输出为hellowo
如果n大于后面以一个字符的长度,则输入完后面一个字符数组的所有字符后补0
不用strncat()函数实现该功能
char ch1[10] = "hello";
char ch2[10] = "world";
int i, j, k, n;
scanf("%d", &n); //追加的字符个数
//判断两个字符数组的长度
for (i = 0; ch1[i] != '\0'; i++);
for (j = 0; ch2[j] != '\0'; j++);
//将ch2[]数组中前n个字符追加到ch1中
for (k = 0; k< n; k++)
{
ch1[i + k] = ch2[k];
}
//添加结束标识符
if (n >= j)
{
ch1[i + j] = 0;
}
else
{
ch1[i + k] = 0;
}
3.strcpy()函数
将字符粗复制到另一个字符数组中字符数组中原有的内容会被覆盖
strcpy(字符数组,字符串)
用别的方式实现的代码为
char str1[20] = "hello";
char str2[20] = "world";
int i, j, k;
for (i = 0; str2[i] != '\0'; i++)
{
str1[i] = str2[i];
}
str[i] = 0;
4.strncpy()函数:将字符串前n个字符复制到字符数组中
strncpy(字符数组,字符串,n)
char str1[20] = "hello";
char str2[20] = "world";
strncpy(str1, str2, 2);
str1[3] = 0;
使用别的方式实现代码
char str1[20] = "hello";
char str2[20] = "world";
int n, i;
scanf("%d", &n);
for (i = 0; i< n; i++)
{
str1[i] = str2[i];
}
str1[i] = 0;
5.strcmp()函数:实现对两个字符串进行比较,a>b返回正,小于返回负数,等于返回0
strcmp(字符串1,字符串2)
实现原理
char str1[20] = "hello";
char str2[20] = "world";
int n, i;
gets(str1); gets(str2);
while (str1[i] != 0 || str2[i] != 0)
{
if (str1[i] == str2[i])
continue;
else
{
if (str1[i] >str2[i])
printf("1");
break;
else
{
printf("-1");
break;
}
}
i++;
}
6.strlen():求字符串实际长度包含\0
strlen(字符串)
7.strlwer():将字符串中的大小字符转换为小写字母
strlwer(字符串)
8.struper():将字符串中的小写字母转换为大写字母
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧