"h",表示2个字符'h',和'\0';占两个字节'h',表示一个数字在内存中,占4个字节
1.当我们写"Hello"时就是告诉编译器,在只读数据段存储6个字符,包括'\0'尾0,有效字节长不包含尾0
2."hello"表达式的值,表示字符串第一个字符的地址
int main(void){
char *a = "Hello World";
a[0] = "h";//会报错,只读数据段的数值不能修改
char[64] = "Hello World"; //把当前字符串复制到数组中,其他位补0;
char[0] = "h";//这样是可以的
printf("%s\n",a);
printf("%c\n",*"Hello World"); //H
}
#include <stdio.h>
#include<string.h>
int main(void){
char *p = "hello";
printf("%ld\n",strlen(p));//传入字符串首地址,返回有效字符长//5
//"hello\0word" 有效长度也是5,遇见尾0就结束了
return 0;
}
#include<stdio.h>
#include<stdlib.h>
int main(void){
int a1 = atoi("123");
int a2 = atoi("-123");
int a3 = atoi("123s123");
int a4 = atoi("-123-123"); //字符串转数字 遇到非法字符立即停止,负号只允许出现在首位
printf("%d%d%d%d",a1,a2,a3,a4); //123,-123,123,-123
return 0;
}
strcmp 比较字符串大小:strcmp(a,b);a大返回正数,b大返回负数,相等返回0
char *p = "123";
char buf[64] = '456';
strcpy(buf, p); //把p拷贝到buf,buf必须有足够的空间
printf("%s",buf); //123
strcat(buf,p); //把p拼接到buf后边,buf的空间必须足够容纳拼接之后的字符串
strstr函数:char *p = "Hello World";
char *q = "W";
char ret = strstr(p,q);
if(ret != NULL){
printf("%s\n",ret); //World,W第一次出现的位置
}
字符串分割:strtok(char *restrict str, const char *restrict rep )
char buf[] = "I am a so good man"; //可变字符串可以分割
char *p = "I am a so good man";
char *ret = strtok(bud," "); // 分割出来I
ret = strtok(NULL," "); //传空表示继续分割之前的字符串//am
ret = strtok(p," ");//传的不是空,表示分割新的字符串,但是不能分割
网友评论