本文目录一览:
- 1、输入一个条码判断是不是教材教材的条码规则为长度13位前缀9787用c语言编程求解答
- 2、怎么样用C语言做条形码
- 3、c语言!!!怎样用char来编13位的barcode啊?
- 4、怎样用C语言做一个条形码
输入一个条码判断是不是教材教材的条码规则为长度13位前缀9787用c语言编程求解答
按照问题,程序应包含以下功能:
一、条码字符串输入及验证。
二、前缀字符串和条码字符串比较,方法很多:
1、可遍历字符串单字符比较。
2、将条码字符串第5个字符置0,然后用strcmp函数比较。
3、在输入条码字符串同时验证前4位的输入。
下面用两种方式代码演示:
#includestdio.h
#includestring.h
#define M 13//条码最大位数
#define N 4//规则前缀位数
#define NS "9787"//前缀,位数必须与N对应
int inputAndCheck(char str1[],char str2[]);//方法一:输入的同时比较(自带位数限制)。是返回1,不是返回0
int checkStr(char str1[],char str2[]);//方法二:输入后比较用字符串函数比较(自带位数检测,小于M位返回0,多余13位截取),是返回1,不是返回0
int main()
{
char s1[N+1]=NS,s2[M+1]={0};
printf("方法一:输入同时比较\n");
if(inputAndCheck(s1,s2))printf("前%d位字符%s是教材条码\n",M,s2);
else printf("前%d位字符%s不是是教材条码\n",M,s2);
printf("\n方法二:输入后比较用字符串函数比较\n");
memset(s2,0,sizeof(char)*(M+1));//同一个变量用于两种方法演示,这里清空一下,实际代码可删除!!
printf("演示用的scanf函数输入,请不要超出%d位:",M),scanf("%s",s2);//注意:checkStr函数会检测参数长度,但这里用scanf输入,其本身不能数组越界
if(checkStr(s1,s2))printf("前%d位字符%s是教材条码\n",M,s2);
else printf("前%d位字符%s不是是教材条码\n",M,s2);
return 0;
}
int checkStr(char str1[],char str2[])
{
char cSave;
int flag=0;
if(strlen(str2)M) return flag;
cSave=str2[N];
str2[N]=0;
flag=strcmp(str1,str2);
str2[N]=cSave;
str2[M]=0;//多余截取
return !flag;
}
int inputAndCheck(char str1[],char str2[])
{
int i=0,flag=1;
printf("输入13位(多余位数将被忽略):");
while(iM)
{
str2[i]=getchar();
if(str2[i]=='\n') continue;//位数不足,跳过回车键继续输入
if(iN str1[i]!=str2[i]) flag=0;
i++;
}
str2[M]=0;
while(getchar()!='\n');//清空输入缓存,避免干扰后续字符串输入
return flag;
}
怎么样用C语言做条形码
就是生成一组数字,把数字打印出来就ok了,不过具体是有难度的没用c没写过这个
c语言!!!怎样用char来编13位的barcode啊?
商品条码数字的含义:
以条形码 693-69838-0001-3 为例
此条形码分为4个部分,从左到右分别为:
1-3位:共3位,对应该条码的693,是中国的国家代码之一。(690--695都是中国的代码,由国际上分配);
4-8位:共5位,对应该条码的69838,代表着生产厂商代码,由厂商申请,国家分配;
9-12位:共4位,对应该条码的0001,代表着厂内商品代码,由厂商自行确定;
第13位:共1位,对应该条码的3,是校验码,依据一定的算法,由前面12位数字计算而得到。第13位的计算方法:把条形码从右往左依次编序号为“……4,3,2,1。”从序号二开始把所有偶数序号位上的数相加求和,用求出的和乘3,再从序号三开始把所有奇数序号上的数相加求和,用求出的和加上刚才偶数序号上的数的和乘3的积,然后得出和。再用大于这个和的最小的10的倍数减去这个和,就得出校验码。
所以,编写barcode前12位是输入的要从其他的地方获取,只有第13位需要计算,程序应该为:(已经经过运行是可行的)
#includestdio.h
main()
{char c[15];
int i,dan,sh;
printf("请输入前12位:\n");
scanf("%s",c);
for(i=0;i12;i++)
{
if(c[i]48||c[i]57){printf("输入出错.");break;} \*计算第13位*\
if(i%2==1)
dan+=c[i]-48;
else sh+=c[i]-48;}
sh=sh*3+dan;
c[12]=(10-sh%10)+48;
for(i=0;i13;i++) \*输出*\
{if(i==3||i==8||i==12)printf("-");
printf("%c",c[i]);
}
printf("\n");
}
如乱的输入:
#includestdio.h
main()
{char c[20];
int i,dan,sh;
printf("请输入:\n");
scanf("%s",c);
for(i=0;i!='\0';i++) \*清除非0~9的数字*\
if(c[i]48||c[i]57)c[i]=c[++i];
for(i=0;i12;i++) \*计算第13位*\
{
if(c[i]48||c[i]57){c[i]=c[++i];break;}
if(i%2==1)
dan+=c[i]-48;
else sh+=c[i]-48;}
sh=sh*3+dan;
c[12]=(10-sh%10)+48;
for(i=0;i13;i++) \*输出*\
{if(i==3||i==8||i==12)printf("-");
printf("%c",c[i]);
}
printf("\n");
}
怎样用C语言做一个条形码
一、条形码的读取
用过键盘口式的扫条码工具的朋友就知道,它就如同在键盘上按下数字键一样,基本不需任何编程和处理。但如果你使用的是其它接口的话,可能你就要为该设备编写通讯代码了。以下有一段简单的25针串口的条码读取器通讯代码。
Option Explicit
Dim sData As String
Private Sub Form_Load()
With MSComm1
.CommPort = 3 '设为COM3,试运行的系统而定,你可提供一个Combox让用户选择。
.PortOpen = True '打开通讯端口
End With
End Sub
Private Sub MSComm1_OnComm()
Dim EndPos As Integer
Select Case MSComm1.CommEvent
Case comEvReceive '当有数据传送过来时
sData = sData Trim(MSComm1.Input)
'检索回车,通常读卡机每组数据结尾都返回一个回车作为结束符
EndPos = InStr(1, sData, Chr(13))
If EndPos = 0 Then '如果未结束就继续努力
Else '读完一组。
lblBarCode.Caption = sData '显示一组条形码
With lstBarCode
.AddItem Mid(sData, 1, EndPos - 1) '添加一组条形码到列表
End With
sData = "" '清空
End If
End Select
End Sub
Private Sub cmdEnd_Click()
MSComm1.PortOpen = False '关闭端口
End
End Sub