C语言字符串

"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," ");//传的不是空,表示分割新的字符串,但是不能分割

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容