本文目錄一覽:
- 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
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/188368.html