C语言将字符变成字符串的问题

Python011

C语言将字符变成字符串的问题,第1张

看你的代码的意思是先把第一个冒号前面的字符串去掉,然后再分割标示符

给你个短的版本,如下

#include <stdio.h>

#include <string.h>

#include <ctype.h>

int main(void)

{

char s[100] = "iios:12DDWDFF-ad_ff=2131_85+ASDF"

char *p = strchr(s, ':')+1

printf("[%s]\n", p)

char *q = p

while (*p) {

if (!isdigit(*p) &&!isalpha(*p) &&*p!='_') {

*p = 0// 添加字符串结尾保证q的结尾正确

printf("%s\n", q)// 这个q就是你要的字符串,如果你想保存成数组的话就开个数组把q存进去

q = p+1// 指向下一个串

}

p++

}

printf("%s\n", q)// 这里还有最后一个别忘了。

return 0

}

#include <stdio.h>

int main()

{

    char hi[] = "Hello"

    printf("%s",hi)

    return 0

}

以上是最简单的用char储存字符串的方式:

看第一行,“Hello”这个字符串有6个字母对吧,还有一个结尾‘\0’的标记,一共7个字节的长度;

因此,在初始化hi变量时,系统会为hi分配7个字节的长度的连续内存,为什么是连续内存,因为hi是char类的数组,数组都是连续内存的!

然后hi的第一个字节的内存放‘H’,第二个字节放‘e’,第三个放‘l’……第七个放结尾标记‘\0’

你想问怎么转化对吧,这个是根据ASCII表格的规定存放的,这是美国规定的转化定律。c语言的char每1个字节,8bit,也就是8个二进制位。可以表示0 ~ 2的8次方

在这百个数中,每个数字都代表一个符号(字母),比如H是72.也就是说hi的第一个元素,char类型的内存里是这样存72的:0 1 0 0 1 0 0 0

以上就是8bit二进制,如果你用printf(“%d”,hi【0】);打印,你会发现,其实hi的第一个元素就是72这个数。

详细ascii对照表请看附件图