用C语言或者C++写一个程序:输入一段(无限)长数据,要显示出所有以02开头,03结尾的数据组。
比如230233030502660395就会显示出023303026603这个是通信用的,自己编写了一个不知道哪些要修改的voidmain(){intdata,i;pri...
比如23 02 33 03 05 02 66 03 95就会显示出02 33 03 02 66 03
这个是通信用的,自己编写了一个 不知道哪些要修改的
void main( )
{ int data,i;
printf("input data: ");
if(data=02)
{i=&data;
do printf(“%d”, &i);
i=i+1
loop until data=03;
}
} 展开
这个是通信用的,自己编写了一个 不知道哪些要修改的
void main( )
{ int data,i;
printf("input data: ");
if(data=02)
{i=&data;
do printf(“%d”, &i);
i=i+1
loop until data=03;
}
} 展开
5个回答
展开全部
串口通信编程吧!输入的十六进制数据,只是选择其中的一个或者多个字串排在前面而已。先用查找的方法将你所要求的数据查找出来,排在前面,移动剩余数据的顺序不就行了吗?可以用链表的方法进行实现,具体写代码可以参考一下相关的资料。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if(data=02) 改为 if(data==0x02), loop until data==0x03;
(02 -- 0是8进制, 0x 是16进制)。
===============================
23 02 33 03 05 02 66 03 95 假定它们是16进制数,每个数都是 2位
下面程序,读到02 开始输出,读到03,输出03 并 结束。
#include <stdio.h>
void main( ){
int data,i;
printf("input data:");
scanf("%2x",&data) ; // 16进制2位,用格式 %2x
while(1){
if (data != 0x02) scanf("%2x",&data) ; else break;
}
printf("%02x ",data);
while(1){
if (data != 0x03) {scanf("%2x",&data) ; printf("%02x ",data); } else break;
}
printf("%02x ",data);
}
(02 -- 0是8进制, 0x 是16进制)。
===============================
23 02 33 03 05 02 66 03 95 假定它们是16进制数,每个数都是 2位
下面程序,读到02 开始输出,读到03,输出03 并 结束。
#include <stdio.h>
void main( ){
int data,i;
printf("input data:");
scanf("%2x",&data) ; // 16进制2位,用格式 %2x
while(1){
if (data != 0x02) scanf("%2x",&data) ; else break;
}
printf("%02x ",data);
while(1){
if (data != 0x03) {scanf("%2x",&data) ; printf("%02x ",data); } else break;
}
printf("%02x ",data);
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
希望对你有帮助!
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
string a;
cout<<"请输入一串长字符串,以enter作为结束"<<endl;
getline(cin,a);
cout<<"你输入的字符长串为:"<<endl;
cout<<a<<endl;
int len=a.size();
int i;
for(i=0;i+8<len;i++)
{
if(a[i]=='0'&&a[i+1]=='2'&&a[i+2]==' '&&a[i+5]==' '&&a[i+6]=='0'&&a[i+7]=='3')
{
if (a[i+3]>='0'&&a[i+3]<='9'&&a[i+4]>='0'&&a[i+4]<='9')
cout<<"02 "<<a[i+3]<<a[i+4]<<" 03 ";
}
}
system("pause");
return 0;
}
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
string a;
cout<<"请输入一串长字符串,以enter作为结束"<<endl;
getline(cin,a);
cout<<"你输入的字符长串为:"<<endl;
cout<<a<<endl;
int len=a.size();
int i;
for(i=0;i+8<len;i++)
{
if(a[i]=='0'&&a[i+1]=='2'&&a[i+2]==' '&&a[i+5]==' '&&a[i+6]=='0'&&a[i+7]=='3')
{
if (a[i+3]>='0'&&a[i+3]<='9'&&a[i+4]>='0'&&a[i+4]<='9')
cout<<"02 "<<a[i+3]<<a[i+4]<<" 03 ";
}
}
system("pause");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是通讯用的,你的这一串数值应该是16进制的才对吧?
如果只采用这样的判断能满足要求吗
如果只采用这样的判断能满足要求吗
追问
是采用十六进制的,之前没有考虑。不过具体编程就不太了解,自己会知道大概的思路。具体的程序就不知道怎么编了?有没有现成的程序
追答
现有的程序都是串口调试通用软件,在调试阶段是可以使用的
这个软件可以发送和接收16进制的数据,调试没问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数组相关 我得查查书 呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询