精华内容
下载资源
问答
  • 完整源码获取:微信关注:嵌入式开发圈发送"分割字符串案例"即可获取。 协议做如下规定:规定数据协议:序列号 长度 状态字 数据长度 数据1 数据2 数据3以空格作为数据单元。ep:00001 00007 1 3 34567 26358 32698(1)...

    完整源码获取:

    微信关注:嵌入式开发圈

    发送"分割字符串案例"即可获取。

    协议做如下规定:

    规定数据协议:

    序列号    长度   状态字   数据长度  数据1  数据2   数据3

    以空格作为数据单元。

    ep:

    00001 00007 1 3 34567 26358 32698

    (1) (2) (3)(4) (5) (6) (7)

    如ep所示:

    (1)00001就是数字1,即代表序列号为1

    (2)00007就是数字7,即代表长度为7

    (3)1代表状态字

    (4)3代表数字长度

    (5)34567代表数据1

    (6)26358代表数据2

    (7)32698代表数据3

    这样就找到规律了,假设数据都为整型或者负整型,我们就可以来实现以下代码:

    #include

    #include

    #include

    //根据空格拆分字符串

    int partition(char *src, char *par, int pos)

    {

    int i,j;

    i = pos;

    //取得一个非空字符

    while(src[i] == ' ')

    ++i;

    if(src[i] != '\0')

    {

    j = 0;

    while((src[i] != '\0') && (src[i] != ' '))

    {

    //判断条件是否满足

    if((src[i] > '9') || (src[i] < '0') && (src[i] != '-'))

    return -1 ;

    par[j] = src[i];

    ++i;

    ++j;

    }

    par[j]='\0';

    return i;

    }

    else

    return -1;

    }

    int main(void)

    {

    int serial_number ;

    int lenght ;

    int status ;

    int data_length;

    int data1,data2,data3;

    int position = 0;

    int para_flag = 1 ;

    int parameter_item = 0;

    char partition_string[20] = {0};

    char *data = "00001 00007 1 3 34567 26358 32698";

    while(para_flag)

    {

    if(para_flag == 0)

    break ;

    if((position = partition(data,partition_string,position)) != -1)

    {

    ++parameter_item ;

    switch(parameter_item)

    {

    case 1:

    serial_number = atoi(partition_string);

    break ;

    case 2:

    lenght = atoi(partition_string);

    break ;

    case 3:

    status = atoi(partition_string);

    break ;

    case 4:

    data_length = atoi(partition_string);

    break ;

    case 5:

    data1 = atoi(partition_string);

    break ;

    case 6:

    data2 = atoi(partition_string);

    break ;

    case 7:

    data3 = atoi(partition_string);

    para_flag = 0 ;

    break ;

    }

    }

    }

    printf("序号:%d\n",serial_number);

    printf("长度:%d\n",lenght);

    printf("状态字:%d\n",status);

    printf("数据长度:%d\n",data_length);

    printf("数据1:%d\n",data1);

    printf("数据2:%d\n",data2);

    printf("数据3:%d\n",data3);

    return 0;

    }

    运行结果:

    当分割的数据量不大的情况下,比如只有三个数据或者4个数据,那我们可以借助strstr来实现字符串分割。

    比如协议如下:

    序号  阈值  差值

    /*

    Data:待分割的字符串

    Serial_Number: 得到序号

    Threshold :得到阈值

    Devalue :得到差值

    */

    void Split_Sensor_Data(char *Data,int *Serial_Number,int *Threshold,int *Devalue)

    {

    int serial_number = 0 ;

    int sensor_threshold = 0 ;

    int sensor_devalue = 0 ;

    char *__Data = Data ;

    char *temp = NULL;

    serial_number = atoi(__Data);

    temp = strstr(__Data," ");

    sensor_threshold = atoi(temp+1);

    temp = strstr(temp+1," ");

    sensor_devalue = atoi(temp+1);

    *Serial_Number = serial_number ;

    *Threshold = sensor_threshold ;

    *Devalue = sensor_devalue ;

    }

    这样我只要传入具体的参数即可获取。

    本文同步分享在 博客“Engineer-Bruce_Yang”(CSDN)。

    如有侵权,请联系 support@oschina.cn 删除。

    本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

    展开全文
  • 在 C 语言中,字符串实际上是使用null字符 '0' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。下面的声明和初始化创建了一个 "Hello" 字符串。由于在数组的末尾存储了空字符,所以...
    341628fd0b2e8abbac3edd230995e9a1.png

    在 C 语言中,字符串实际上是使用null字符 '0' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。

    下面的声明和初始化创建了一个 "Hello" 字符串。由于在数组的末尾存储了空字符,所以字符数组的大小比单词 "Hello" 的字符数多一个。

    char greeting[6] = {'H', 'e', 'l', 'l', 'o', '0'};

    依据数组初始化规则,您可以把上面的语句写成以下语句:

    char greeting[] = "Hello";

    以下是 C/C++ 中定义的字符串的内存表示:

    c29709a1a465fc1888f73c93bd82dfa8.png

    一、字符串输入

    1. 输入单个字符串

    可以使用scanf函数,以空格为分割输入字符串,代码如下:

    6ef861d20fe76132cbad65d8ba4834dd.png

    2. 输入整行字符串

    可以使用gets函数,以 '' 为分割输入整行字符串,代码如下:

    be8eeba1365c5b2383660737f78d3b5b.png

    二、字符串处理

    1. 字符串拷贝

    可以使用strcpy函数,代码如下:

    4dd0aca31d5d5eb43ea6b50160302115.png

    注意:1. str1 会覆盖 str2 内容;2. 定义数组是,str2 长度要大于或等于 str1。

    也可以使用strncpy函数,代码如下:

    074199956f478986084f50d6d2d99090.png

    注意:str2 的前 n 个字符会被 str1 的前 n 个字符覆盖。

    2. 字符串连接

    可以使用 strcat 函数,代码如下:

    22ea4edc7051cc0fee952fa1dfb20413.png

    注意:要注意 str2 的长度为 str1 与原 str2 长度之和,str2 最后的 '0' 字符会自动消失。

    也可以使用strncat函数,将字符串的前 n 个字符连接到另一个字符后面,代码如下:

    a4690b2f9d73ec9757b9f985959ac0fd.png

    3. 字符串比较

    可以使用strcmp函数,代码如下:

    4cea38e5ce7f478e135dce8a5215d29e.png

    4. 字符串长度

    可以使用 strlen 函数,代码如下:

    af98b8dd201f27e13a105877fc0f9b60.png
    663805e4aa0952ce683124254e1a8547.png

    几点学习建议:

    1.基本概念很重要。无论学C,还是学C++,基本概念都是第一位的,也是比较困难的,但只有把握了基本概念才能把握整体脉络,才能居高临下。

    2.C是C++的子集,它的基本概念和设计方法相对比较容易理解,初学者可从它入手。

    3.如果要学好C++,建议初学者最好别在如VC,BCB平台下写程序,那种自动化的代码生成,花花绿绿的界面,会让你手足无措。最好先找一片空地(unix,dos),从头做起,写几个大点的程序,数个回合,再到VC,BCB下看看,你会轻松得很。在我看来,学好C/C++是成为VC,BCB高手的必由之路。

    4.不要妄想速成,必须得一个byte,一个bit的去抠,尽量搞清楚每一个问题。

    文章最后

    怎么快速学C/C++,有什么方法,打算深入了解这个行业的朋友,可以加C/C++学习群:1023934779,不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2019最新的C/C++资料和0基础入门教程,欢迎初学和进阶中的小伙伴。

    每天晚上20:00我都会开直播给大家分享C/C++编程学习知识和路线方法,群里会不定期更新最新的教程和学习方法,大家都是学习C/C++的,或是转行,或是大学生,还有工作中想提升自己能力的前端党,如果你是正在学习C/C++的小伙伴可以加入学习。最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实,非常适合新手学习,有不懂的问题可以随时问我,工作不忙的时候希望可以给大家解惑。

    学习思路:

    e62d6e7f74427c06f93a867b42e67688.png

    学习资料:

    66521f16248e89a19ba903d172419497.png
    展开全文
  • 作者:陈太浪出处:https://home.cnblogs.com/u/TomHe789/C语言中提供了许多的字符串操作函数,常见的字符串操作函数有以下几种:1、求字符串长度的函数原型函数:strlen(字符串1名称, 字符串2名称);实现原理:将...

    fab639d6469769f7598d3b21a430a957.png

    作者:陈太浪 

    出处:https://home.cnblogs.com/u/TomHe789/

    C语言中提供了许多的字符串操作函数,常见的字符串操作函数有以下几种: 

    1、求字符串长度的函数

    原型函数:strlen(字符串1名称, 字符串2名称);

    实现原理:将字符串名称传入该函数,该函数会遍历该字符串,最后将长度返回给我们,注意返回的长度不包括'\0';

    2、字符串拷贝函数

    原型函数:strcpy(字符串);

    实现原理:该函数需要传入两个字符串名称,所谓拷贝其实是指将字符串2所包含的元素,复制到字符串1中,注意

    这里的复制其实也包含覆盖的意思,字符串1中原来的元素会被覆盖掉;

    3、字符串拼接函数

    原型函数:strcat(字符串1名称, 字符串2名称);

    实现原理:该函数也需要传入两个字符串名称,所谓拼接其实是指将字符串2所包含的元素,拼接到字符串1的后面;

    4、字符串比较函数

    原型函数:strcmp(字符串1名称, 字符串2名称);

    实现原理:该函数也是需要传入两个字符串的名称的,然后同时遍历两个字符串,每次都分别从这两个字符串中取出一个字符,

    再比较这两个字符的ASCII码,如果从字符串1中取出的字符的ASCII码比从字符串2中取出的ASCII码要大,那么该函数就会返回 1,

    如果小的话该函数就会返回 -1,如果取到了两个字符串的最后一个字符,每一个字符的ASCII码都是相等的,那么该函数就会返回 0。

    了解完这几个字符串操作函数的原理之后,我们就可以不使用C语言提供的库函数,自己自定义这几个函数了;

    具体代码如下:

    #include //函数声明int myStrlen(char str[]);void muStrcpy(char str1[], char str2[]);void myStrcat(char str1[], char str2[]);int myStrcmp(char str1[], char str2[]);int main(){    char str1[] = "TomHe789";    char str2[] = "TomHe";    char str3[] = "789";    char str4[] = "abcde";    char str5[] = "abcde";    //打印str1的长度    printf("str1Len = %d\n", myStrlen(str1));   //8    //将str2拷贝到str1中    muStrcpy(str1, str2);                           printf("str1 = %s\n",str1);                 //TomHe    //将str3拼接到str2后面    myStrcat(str2, str3);                           printf("str2 = %s\n",str2);                 //TomHe789    //打印出 myStrcmp(str4, str5)的结果    printf("res = %d", myStrcmp(str4, str5));   //0    return 0;}//自定义字符串长度函数int myStrlen(char str[]){    int len = 0;    while (str[len] != '\0')    {        len++;    }    return len;    }//自定义字符串拷贝函数void muStrcpy(char str1[], char str2[]){    int len = 0;    while (str2[len] != '\0' || str1[len] != '\0')    {        str1[len] = str2[len];        len++;    }    str1[len] = '\0';    }//自定义字符串拼接函数void myStrcat(char str1[], char str2[]){    int len = 0;    int len1 = 0;    while (str1[len] != '\0')    {        len++;    }    while (str2[len1] != '\0')    {        str1[len] = str2[len1];        len++;        len1++;    }    str1[len] = '\0';}//自定义字符串比较函数int myStrcmp(char str1[], char str2[]){    int len = 0;    while (str1[len]!='\0' || str2[len]!='\0')    {        if(str1[len] > str2[len])            return 1;        else if(str1[len] < str2[len])            return -1;        else            len++;    }    return 0;}

    运行结果

    e3a754dd2320ffe07a54374b21b86ad4.png

    48a5ce6d14555ff6c58245688130bf4d.png

    往期回顾

    • 哪些5G芯片和5G模组已经问世?| 截至2020年Q1

    • NB-IoT要不要走运营商平台?

    • 以疫情的名义对你"开枪",你还不考虑还手吗?

    • 解析华为HMS的发布到底为我们带来了什么影响?

    • 如何实现室内精准定位?——UWB定位

    • WiFi 6到来,WiFi也有更新换代?

    • 物联网IoT终端设备如何选择接入协议
    展开全文
  • 下面是菜狗输入含空格字符串的学习历程总结,还有航电ce原因。 此题是航电2024,题目回看。 输入含空格字符串: 1.用gets()输入含空格字符串 2.用scanf("%[ ^\n ]", )输入 这个就是"^"是非的意思,遇到\n结束。 也...

    这几天组里开始催学字符串输入了,我早就把字符串输入学辽,信心满满地打开航电
    看一眼题,嗨,简单。
    打了一个小时后。。。。
    我还是菜狗。
    下面是菜狗输入含空格字符串的学习历程总结,还有航电ce原因。

    此题是航电2024,题目回看。

    输入含空格字符串:
    1.用gets()输入含空格字符串
    在这里插入图片描述

    2.用scanf("%[ ^\n ]", )输入
    在这里插入图片描述

    这个就是"^"是非的意思,遇到\n结束。
    也可以把\n换成其他的,比如换成a,字符串里就遇到a停止输入。

    然而,就这样改一下输入结果还是不对,因为它居然把回车也算成了字符!!!我检查了好久才发现,需要另一个函数来装回车。
    在这里插入图片描述
    也就是这个,
    getchar,输入缓冲中读取一个字符并返回。
    注意头文件:
    #include<stdio.h>

    然后我改对了,用codeblocks运行正确,交到航电后居然错了,错了!!!
    我又参考了一下别人的代码。
    是差了头文件
    #include<ctype.h>这个是C标准函数库,航电好像有了这个scanf才能用。

    3.用string 定义来输入带空格
    用**getline(cin,a)**的形式。
    在这里插入图片描述

    AC代码:

    #include<string.h>
    #include<ctype.h>
    int main()
    {
        int n;
        while(scanf("%d",&n)==1){
            getchar();
            while(n--){
                char a[55];
                scanf("%[^\n]",a);
                int l,c=0;
                l=strlen(a);
                if(a[0]>='a'&&a[0]<='z'||a[0]>='A'&&a[0]<='Z'||a[0]=='_'){
                    for(int i=1;i<l;i++){
                        if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z'||a[i]=='_'||a[i]>='0'&&a[i]<='9'){
                            c++;
                        }else{
                          printf("no\n");
                          break;
                        }
                    }
                }else{
                  printf("no\n");
                }
               if(c==l-1) printf("yes\n");
            }
        }
        return 0;
    }
    
    在这里插入代码片
    

    有错误的希望在评论区或者私信留言指出,多谢!

    展开全文
  • C语言去掉字符空格

    2020-10-08 21:07:43
    本人大一软件工程新生,刚开始接触C语言编程,希望各位码界前辈多多指教,多提一些对我的程序的意见,以便我在编程的道路上有所进步。 #include<stdio.h> #include<string.h> int main() { char word...
  • C语言去除字符空格

    2020-03-23 17:26:23
    void quchukongge(char p[]) { char *q; while (*p != '\0'){ if (*p == ' '){ q = p + 1; while (*q != '\0') ... //空格和非空格调换位置 避免数据重复 *p = *q; *q = ' ...
  • C语言数据结构实现字符串分割的实例以下为“字符串分割”的简单示例:1. 用c语言实现的版本#include/* 根据空格分隔字符串...//取到第一个非空格字符while(src[i] == ' '){++i;}if(src[i] != '\0'){j = 0;while((src...
  • C语言过程中最枯燥的部分,分几次讲解,我会尽量用最轻松的方式讲解过了这部分,后面的学习就会变得有意思一些了基本语法C语言的基本字符集1. 标识符的命名规则1. 1 什么是标识符?在C语言中,符号常量,变量,数组,...
  • C语言关于字符空格输出问题0lzh31582015.11.30浏览38次分享举报Description 两个部门之间采用加密的方式传输数据以保障数据安全,加密方法为将其中所有的大写英文字母+3,小写英文字母-3,其它字符不变。...
  • 在 C 语言中,字符串实际上是使用null字符 '0' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。下面的声明和初始化创建了一个 "Hello" 字符串。由于在数组的末尾存储了空字符,所以...
  • 空格作为分隔符的字符串三角形C语言输出应该是这样的这这是这是这是最好的这是最好的办法这是最好的方式,这是花费最好的办法是花时间的最佳方式迄今为止的代码,我是#include int main(){char msg[]="this is the...
  • C语言中空字符空格

    千次阅读 2013-10-12 12:47:20
    字符:‘\0',NUL(null),对应ASCII值为0 空格:‘ ’,对应ASCII值为32 字符串结束标志:空字符‘\0’
  • c语言 空格_C语言特点

    2020-11-29 04:54:02
    一、主要特点:可结构化、函数思想、运算符丰富、数据类型丰富、可直接访问物理地址、程序执行率高。...C语言字符集由字母,数字,空格,标点和特殊字符组成。在字符常量,字符串常量和注释中还可以使用汉...
  • sscanf() - 从一个字符串中读进与指定格式相符的数据.函数原型:int sscanf( string str, string fmt, mixed var1, mixed var2 ...);int scanf( const char *format [,argument]... );说明:sscanf与scanf类似,都是...
  • c语言输入字符串有空格怎么办

    千次阅读 2020-05-14 14:07:08
    printf("输入一段字符串:"); fgets(str,50,stdin); 采用fgets输入可以识别空格,如输入hello world,输出hello world 若采用scanf,空格就相当于一个结束符,识别不了 如输入hello world,只能输出hello 只不过用...
  • 看着有错的程序,不知该如何改起,本人通过对C的学习,积累了一些C编程时常犯的...C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。2.忽略了变量的类型,进行...
  • C语言去除字符串首尾空格,trim()函数实现 https://blog.csdn.net/u013022032/article/details/50521465 /* C语言去除字符串首尾空格,trim()函数实现 https://blog.csdn.net/u013022032/article/details/50521465...
  • 相关博文:C语言字符串探究(一):字符串与字符数组 相关博文:C语言字符串探究(二):字符串原生操作——strlen、strcat、strcpy、strcmp自实现 相关博文:C语言字符串探究(三):字符串库函数操作——strlen、...
  • #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> int main(int agrc, const char *argv) { char p[128] = " 62 644 46 6 ";... char *p1
  • 在网上看了些去除空格的代码,觉得...3、去除右边空格想去除左右两边空格,只要先去除左边再去除右边的就行了以下是实现代码:/*去除字符串中所有空格*/voidVS_StrTrim(char*pStr){char *pTmp = pStr;while (*pStr !...
  • c语言字符空格的删除

    万次阅读 2017-12-07 13:17:22
    整体思路:将后续字符往前移动。 源代码: char s1[] ="NI h a o zho ng qiu"; int n=strlen(s1); printf("strlen(s1)=%d\n",n); ...//判断当前字符是否是空格 if(isspace(s1[i+spac
  • C语言去除字符串首尾空格

    千次阅读 2018-03-16 20:06:54
    char * strim(char *str)//去除首尾的空格 { char *end,*sp,*ep; int len; sp = str; end = str + strlen(str) - 1; ep = end; while(sp&lt;=end &amp;&amp; isspace(*sp))// *sp == ' '也可以 ...
  • 自定义一个C语言去除字符串左边空格,去除字符串右边空格,去除字符串两边空格的方法。代码如下: #include <stdio.h> #include <stdlib.h> #include <string.h> int ltrim(char *str, char *...
  • 编写一个函数count,有实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。 要求:(1)定义统计函数count来实现。 函数的原型为:void count(char str...
  • 展开全部程序源码如下:#include#includeintmain(void){char str[1000];//定义一个字符串数组32313133353236313431303231363533e78988e69d8331333431373234char ...//定义空格变量printf("请输入一串字符:");/...
  • C语言输入字符字符串(所有函数大汇总)C语言有多个函数可以从键盘获得用户输入,它们分别是:scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。getchar()、getche()、getch():这三个函数都用于输入...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,303
精华内容 1,721
关键字:

c语言空格字符

c语言 订阅