1.字符串的2种定义方式和底层细节
只要用双引号括起来的都是字符串






2.练习 键盘录入字符并遍历
#include <stdio.h>
int main()
{
/*
需求:键盘录入一个字符串,使用程序实现在控制台遍历该字符串
*/
//1.键盘录入一个字符串
//底层逻辑:
// 程序在运行的时候,首先会创建一个长度为100的字符数组str
// 在进行键盘录入的时候,会把每一个字符存入到上面的str数组当中,并加上结束标记
// 在这个过程中,需要修改字符数组的内容,所以第一种方式可以,第二种方式不可以
char str[100];
printf("请录入一个字符串\n");
scanf("%s", str);//str本身就是一个指针,所以不用再加&
printf("接收到的字符串为:%s", str);
//2.遍历字符串得到每一个字符
char* p = str;
while (1)
{
//利用指针获取字符串中的每一个字符,知道遇到\0为止
char c = *p;
//判断当前获取到的字符是否为结束标记
if(c == '\0')
{
//如果是结束标记,循环结束
break;
}
printf("%c\n", c);
//指针往后移动一个位置
p++;
}
return 0;
}
3.#include <stdio.h>
int main()
{
/*
需求:键盘录入一个字符串,使用程序实现在控制台遍历该字符串
*/
//1.键盘录入一个字符串
//底层逻辑:
// 程序在运行的时候,首先会创建一个长度为100的字符数组str
// 在进行键盘录入的时候,会把每一个字符存入到上面的str数组当中,并加上结束标记
// 在这个过程中,需要修改字符数组的内容,所以第一种方式可以,第二种方式不可以
char buffer[10];
printf("请录入一个字符串\n");
scanf_s("%s", buffer, sizeof(buffer));//str本身就是一个指针,所以不用再加&
printf("接收到的字符串为:%s\n", buffer);
//2.遍历字符串得到每一个字符
//遍历字符串其实就是遍历str这个数组,但是,字符串的内容不知道,所以不能用for循环,
// 因为不知道循环的次数,也不知道循环的范围,但是能知道每一个字符串的结尾都会有一个\0作为结束标记,
// 所以要用whie循环
char* p = buffer;
while (1)
{
//利用指针获取字符串中的每一个字符,知道遇到\0为止
char c = *p;//先写一个临时变量char c,用他去记录当前指针获取到的数据,
//在下面就可以对获取到的数据c来做一个判断
//判断当前获取到的字符是否为结束标记
if (c == '\0')
{
//如果是结束标记,循环结束
break;
}
//打印当前遍历到的字符
printf("%c\n", c);
//指针往后移动一个位置
p++;
}
return 0;
}
3.字符串数组
#include <stdio.h>
int main()
{
/*
需求:定义一个数组存储5个学生的名字并进行遍历
字符串的底层其实就是字符数组
把多个字符数组,再放入到一个大的数组当中
二维数组
*/
//1.定义一个二维数组,存储多个学生的名字
//先写一个char,然后给这个数组起一个名字,比如说就叫做strArr,就表示字符串的数组,
//既然是一个二维数组,后面要写2个[],第一个表示要存多少个一维数组,第二个表示字符串有多长,可以写大一点
char strArr[5][100] =
{
"zhangsan",
"lisi",
"wangwu",
"zhaoliu",
"qianqi"
};
//2.遍历二维数组
for (int i = 0; i < 5; i++)
{
//i.依次表示二维数组中的每一个索引
char*str=strArr[i];//利用strArr和索引,就能获取到每一个一维数组,而这里的一维数组,其实就是表示每一个名字
//然后再把他进行赋值,赋值给一个str的指针,
printf("%s\n", str);
//小小的细节:就在通过strArr获取每一个元素的时候,只能复制给指针,如果说再写一个数组,比如说
//char str[100] =strArr[i],这样子是不行的
//应该得在后面加{},即:char str[100]={}
}
//第二种方式
//把第五个字符串的指针,放入到一个数组当中
//指针数组
char* strArr2[5] =
{
"zhangsan",
"lisi",
"wangwu",
"zhaoliu",
"qianqi"
};
//遍历指针数组
for (int i = 0; i < 5; i++)
{
//i:依次表示数组中的每一个索引
char* str = strArr2[i];
printf("%s\n", str);
}
return 0;
}
5299

被折叠的 条评论
为什么被折叠?



