C语言中检测字符串中回车并将回车以后的字符赋值给变量

如图所示,我想要读取第二行的abc123,在串口中该怎么实现,我知道的好像用strchr可以解决,求具体方法,谢大神!... 如图所示,我想要读取第二行的abc123,在串口中该怎么实现,我知道的好像用strchr可以解决,求具体方法,谢大神! 展开
 我来答
百度网友8a59d6f
推荐于2018-05-10 · TA获得超过690个赞
知道小有建树答主
回答量:611
采纳率:0%
帮助的人:285万
展开全部

可以用一个循环一个一个的判断字符串中是否有回车,然后将它下一个字符赋给变量,最后退出循环。

下面是具体代码:

#include <stdio.h>
#include <string.h>
#define SIZE 100 //字符串长度 
int main(void)
{
    char str[SIZE] = "12345\n6789"; //被检测字符串
    char c; //储存回车后变量 
int i; //循环控制变量

for (i = 0; i < strlen(str); i++)
{
if (str[i] == '\n')
{
c = str[i+1];
printf("该字符串中有回车,回车后一位字符是");  //有回车时输出内容 
if (i + 1 == strlen(str)) //回车在字符串结尾时 
{
printf("\\0");

else //回车在字符串中时 
{
printf("%c", c);
}
break; 
}

if (i == strlen(str)) //无回车时 
{
printf("该字符串中无回车");
}
    
    return 0;
}

该段代码运行后输出是:
该字符串中有回车,回车后一位字符是6
运行正常
可以改动str测试其他情况,也可以写一段代码自行输入字符串。
Aupryyyyyyyyyy
2016-07-11 · TA获得超过1636个赞
知道大有可为答主
回答量:1574
采纳率:53%
帮助的人:951万
展开全部

如果字符串里只有一个回车符的话,那方法就是循环字符串中的每一个字符,找到 '\n' 或者 '\r' 的话,记下它的索引,然后用 string.h 库的 strcpy 函数即可。

char *str = "aaaaaaaaaaaaaa\nbbbbbbbbbbbbb";
char str2[128];        /* 结果字符串 */
for(int i = 0; str[i] != 0; ++i)
{
    if(str[i] == '\n' || str[i] == '\r')
    {
        strcpy(str2, str + i + 1);
        break;
    }
}

 

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
码道长
2016-07-31 · TA获得超过1347个赞
知道小有建树答主
回答量:220
采纳率:80%
帮助的人:60.7万
展开全部
#include <stdio.h>
#include <stdlib.h>

/****************************************************
函数功能:
入口参数:str ->搜索的字符串
出口参数:* ptr_ch,如果字符串有回车且回车后字符串未
          结尾则将回车符后的字符保存到* ptr_ch;                                   
返回值:1 ->查找成功;
        0 ->字符串中没有回车符
        -1 ->字符串回车符是最后一个字符 
备注:str必须是字符串数组否则很可能会造成溢出 
*****************************************************/
int GetEnterChar(char str[], char * ptr_ch)
{
     while(*str)
     {
            if('\n' == *str)
            {//是回车符 
                     str ++;
                     if(*str)
                     {//回车后的字符不是结尾符 
                         *ptr_ch = *str;
                         return 1;
                     }
                     else
                     {//回车符后是字符串结尾符 
                         return -1;
                     }
            }
            str ++; 
     }
}

int main(int argc, char *argv[])
{
  char str[] = "Hello world !\nyes";
  char ch = 0;
  GetEnterChar(str, &ch);
  printf("字符串回车后的字符是:%c\n",ch); 
  system("PAUSE");
  return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bad5tone
2016-06-28 · TA获得超过437个赞
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:150万
展开全部
因为网络太差, 所以回答的时候没看到图片,然后自己看着写了,就是这样.

char *get_enter(char *p,int n) //输入被检测的字符串地址及字符串长度,
//返回回车以后的字符串的指针

{

int i;

for(i=0;i<n;i++)
{
if(*(p+i)!==13)

break; //检测到回车(ASCALL码13)跳出循环

return p+i; //返回回车以后的字符串的地址

}
main()
{
int m;
char str2[]; // 储存回车以后的字符赋值
char str1[m]=".........."; // 被检测的字符串
m=sizeof(str1);

str2[]=get_enter(str,m);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
coinv
2014-06-02 · TA获得超过410个赞
知道小有建树答主
回答量:775
采纳率:0%
帮助的人:443万
展开全部
串口是按字符读取的,你就一直读,只要不是回车就抛弃。直到读到第一个回车符,然后从下一个开始存储就行了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(10)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式