C语言日期字符串减少两天,C语言第二天(字符串)

字符数组

// 声明

char a[] = {'a', 'b', 'c'};

字符串( 字符数组最后加一个\0就是字符串了 )

// 使用字符串处理函数需引入

// 结尾的 \0 也占一个长度,str是常量指针是只读的,所以不能修改

char *str = "abc";

// 如果要修改字符串,应该使用字符数组

char str[] = "abc";

char str[] = {'a', 'b', 'c', '\0'};

// 使用指针还是字符数组

指针:作为函数的参数

动态分配空间(空间是malloc分配的)

数组:作为本地变量空间自动被回收(可以被修改)

字符串数组

// a是一个指针,指向另一个指针,那个指针指向一个字符(串),

char **a;

// 下面两个是不相等的

char *a[] = {"hello", "world"}; // 里面的值可以被修改

char a[][10] = {"hello", "world"};

// main函数的第二个参数就是一个字符串数组

int main(int argc, char **argv)

字符输入输出

// int putchar(int c);

// 向标准输出写一个字符

// 返回写了几个字符,EOF(-1)表示写失败

// int getchar(void);

// 从标准输入读入一个字符

// 返回类型是int是为了返回EOF(-1)-- 返回EOF结束输入

// windows : ctrl-z

// unix : ctrl-d

// 实例 EOF是系统定义的宏

int ch;

while((ch = getchar()) != EOF){

putchar(ch);

}

字符串函数

// #include

// strlen 字符串长度(不包括结尾的0)

int main(int argc, char **argv) {

char a[] = "hello";

int len;

len = strlen(a);

printf("%d", len); // 5

// 6

return 0;

}

// strcmp 字符串是否相同(按ASCII码值去比较)

int main(int argc, char **argv) {

char a[] = "hello";

char b[] = "hello";

printf("%d\n", strcmp(a, b); // 不为0表示不相同

printf("%d", a == b); // == 表示两个表量是否是相同的地址,所以不能这样比较两个字符串是否相等

return 0;

}

// strcpy 拷贝字符串,安全版本strncpy,strncpy(dst, src, len);

int main(int argc, char **argv) {

// strcpy(char *restrict dst, const char *restrict src);

// 把src的字符串拷贝到dst,restrict表明src和dst不重叠(c99)

// 返回dst

char src[] = "hello";

char dst[10];

strcpy(dst, src);

printf("%s", dst);

// 常见使用方法,复制一个字符串+1代表给 \0 也申请一个空间

char *dst = (char*)malloc(strlen(src)+1);

strcpy(dst, src);

return 0;

}

// strcat 字符串拼接,安全版本strncat,strncpy(s1, s2, len);

int main(int argc, char **argv) {

// strcat(char *restrict s1, const char *restrict s2);

// 把s2拷贝到s1后面,返回s1,s1必须有足够的空间

char s1[6] = "hello";

char s2[] = "wold";

strcat(s1, s2);

printf("%s", s1);

return 0;

}

// strchr 字符串中查找字符

int main(int argc, char **argv) {

// strchar(const char *s, int c); 从左开始找

// strrchar(const char *s, int c); 从右考试找

// 返回的是指针,返回NULL表示没有找到

char s[] = "hello";

char *p = strchr(s, 'l'); // 查找第一个l出现的位置

p = strchr(p+1, 'l'); // 查找第二个l出现的位置

printf("%s", p); // llo

// 返回第一个l前面的字符串

char c = *p;

*p = '\0';

char *t = (char*)mallog(strlen(s)+1);

strcpy(t, s); // t里面就是he

return 0;

}

// strstr 字符串中查找字符串

int main(int argc, char **argv) {

// strstr(const char *s1, const char *s2);

// strcasestr(const char *s1, const char *s2); 忽略大小写

// 返回一个指针

char s1[] = "hello";

char s2[] = "llo";

char *p = strstr(s1, s2);

printf("%p", p);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值