C语言,如何将一个字符变为一个字符串?如何将一个字符串变为一个字符?比如,将'a'变为"a",将"a"变为'a'

Python030

C语言,如何将一个字符变为一个字符串?如何将一个字符串变为一个字符?比如,将'a'变为"a",将"a"变为'a',第1张

字符串可以包含多个字符

所以 单个字符转为字符串,只需要定义一个字符串,并把第一个字符赋值成该值即可。

比如

char a='a'

char s[2]

s[0]=a

s[1]=0

字符串转字符,只能保留第一个字符。 

比如

char c

char s[2] = "a"

c=s[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对照表请看附件图

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

给你个短的版本,如下

#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

}