day01
c语言基础
字符串
使用字符数组存储字符串
或者使用char类型的指针来表示字符串
char a[] = “123”; // 默认有\0结尾
字符数组必须以\0结尾要不然很危险
char a [] = {‘1’,’2’,’3’};的区别,可以比较大小
printf();把数组传入时仅仅是一个警告
字符串默认都是有\0 == 在字符数组中使用\0结尾
不是任何字符数组都是字符串,但是字符串可以使用字符数组来存储
// 字符串的声明 // "itcast.cn" // 别指定长度 // 默认有一个隐藏的\0结尾 // 定义方式一 char scholName[] = "itcast.cn"; // 定义方式二 char name[5] = {'z','z','g','\0'}; // printf 中只接受常量 printf("name = %s\n",scholName); // char scholName[] = "itcast.cn"; 常量 char countryName[] = "china"; // 传递常量 printf("%s\n",countryName); printf("china2\n");
%s 输出字符串(字符数组)
从指定的地址开始一个一个的输出字符,直到\0结束
strlen 字符串处理函数
- 计算字符串长度
- 计算的是字符数,并不是字数。一个汉字算作3个字符
- 计算的字符不包括尾部的、0
- 声明在string.h文件中
- 从某个地址的开始数字符的个数,直到遇到\0为止
- OC中的字符串都是以@开头
字符串练习
不使用指针。4种实现方式
// 编写一个函数char_contains(char str[],char c),如果字符串str中包含字符c则返回数值1,否则返回数值0
int str_contains(char str[],char key)
{
for (int i = 0; i < strlen(str); i++) {
// 如果ASCII值相同就存在
if(str[i] == key){
return 1;
}
}
return 0;
}
int main()
{
int result = str_contains("itcast.com",'q');
printf("result = %d\n",result);
return 0;
}
示例代码:
#include <string.h>
#include <stdio.h>
// 可读性 -> 性能 -> 精简(重构)
// 定义方法的声明
int char_contains(char str[], char c);
int main()
{
//int result = char_contains("itc8ast", '8');
char name[] = "itcast";
int result = char_contains(name, 'o');
printf("%d\n", result);
return 0;
}
// "itc" '7' 方法的定义
int char_contains(char str[], char c)
{
int i = -1;
/*
i 3
str[++i] 'c'
c '7'
*/
// 1.遍历整个字符串
// 不满足的时候才会进行循环,条件满足,循环结束
// i的位置记录的就是满足的条件的位置
while ( str[++i] != c && str[i] != '\0' ) ;
// 根据记录的位置取出值
//return str[i] == '\0' ? 0 : 1;
return str[i] != '\0';
}
字符串数组
// 长度要包含\0的2个长度
char names[2][5] = {"zzg","szg"};
char names2[2][5] = {
{'z','z','g','\0'},
{'y','d','z','\0'}
};
printf("names[0] = %s\n",names[0]);
printf("names2[0][1] = %c\n",names2[0][1]);
指针
OC里面用的是指针