给你个短的版本,如下
#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对照表请看附件图