當前位置:首頁 » 操作系統 » c代碼生成器源碼

c代碼生成器源碼

發布時間: 2022-07-30 05:54:37

java代碼生成器能生成c語言代碼嗎用什麼方法能實現呢

按照我的理解,可以的,代碼生成器是跨平台,而且是跨語言的(至少是跨文本語言的,UML暫時不好說,)。
代碼生成器作為一種開發工具,一般不直接作為程序的一部分,通常也不直接或間接(如通過AOP)被程序調用,他是通過編程的方式生成所需要的代碼,然後將生成的代碼作為源文件,復制到開發工具的代碼區,然後進行編譯。由於代碼生成器是在編譯之前運行的,因此它可以跨語言,你不但可以用代碼生成器生成高級語言,也可以生成匯編語言,甚至機器碼(0、1代碼)。
但編寫代碼生成器是一個難點,它需要你了解目標編程語言的語法。如果別人已經把你需要的代碼生成器寫好了,你只需按要求使用即可,此時就不需要了解目標編程語言的語法。
JNI是通過Java調用C語言(或其他語言,一般是C),它的實現機制與代碼生成器不同(JNI是通過代碼調用實現功能,而代碼生成器是生成代碼,復制代碼進行使用),由於C是底層語言,一些底層操作單靠Java無法實現,所以才需要JNI。
以上是我對代碼生成器的個人理解,雖然提問時間已過了很久,但依然希望能對你及其他網友有所幫助。

② 跪求C語言的隨機數生成器的頭文件代碼

這題不是讓自己根據給出的演算法實現么?

給你兩篇參考文獻吧:
C語言產生隨機數:

http://blog.csdn.net/ammana_babi/article/details/1437498

rand ( ) 和 srand ( )【C語言庫函數源代碼】:
http://blog.csdn.net/ammana_babi/article/details/1437498

③ 一維條碼生成器c#源代碼,要VS2010版本的!

郵件就不發了,你拉一個form,加一個textbox和一個按鈕。
代碼如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Drawing;
using System.Collections;

namespace BarcodeTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string fix_value = "";
byte[] fix_image01 = new byte[1024];

fix_value = this.textBox1.Text;

Code39 _code39 = new Code39();
_code39.Height = 120;
_code39.Magnify = 1;
_code39.ViewFont = new Font("宋體", 20);

System.Drawing.Image[] _image = new System.Drawing.Image[1];
System.IO.MemoryStream _stream = new System.IO.MemoryStream();
FileStream[] fs = new FileStream[1];
string jpg = "";
jpg = "d:\\" + fix_value.ToString() + ".jpeg";
_image[0] = _code39.GetCodeImage(fix_value, Code39.Code39Model.Code39Normal, true);
_image[0].Save(_stream, System.Drawing.Imaging.ImageFormat.Jpeg);
_image[0].Save(jpg);

}
}

public class Code39
{
private Hashtable m_Code39 = new Hashtable();
private byte m_Magnify = 0;

public byte Magnify { get { return m_Magnify; } set { m_Magnify = value; } }
private int m_Height = 40;

public int Height { get { return m_Height; } set { m_Height = value; } }
private Font m_ViewFont = null;

public Font ViewFont { get { return m_ViewFont; } set { m_ViewFont = value; } }

public Code39()
{
m_Code39.Add("A", "1101010010110");
m_Code39.Add("B", "1011010010110");
m_Code39.Add("C", "1101101001010");
m_Code39.Add("D", "1010110010110");
m_Code39.Add("E", "1101011001010");
m_Code39.Add("F", "1011011001010");
m_Code39.Add("G", "1010100110110");
m_Code39.Add("H", "1101010011010");
m_Code39.Add("I", "1011010011010");
m_Code39.Add("J", "1010110011010");
m_Code39.Add("K", "1101010100110");
m_Code39.Add("L", "1011010100110");
m_Code39.Add("M", "1101101010010");
m_Code39.Add("N", "1010110100110");
m_Code39.Add("O", "1101011010010");
m_Code39.Add("P", "1011011010010");
m_Code39.Add("Q", "1010101100110");
m_Code39.Add("R", "1101010110010");
m_Code39.Add("S", "1011010110010");
m_Code39.Add("T", "1010110110010");
m_Code39.Add("U", "1100101010110");
m_Code39.Add("V", "1001101010110");
m_Code39.Add("W", "1100110101010");
m_Code39.Add("X", "1001011010110");
m_Code39.Add("Y", "1100101101010");
m_Code39.Add("Z", "1001101101010");
m_Code39.Add("0", "1010011011010");
m_Code39.Add("1", "1101001010110");
m_Code39.Add("2", "1011001010110");
m_Code39.Add("3", "1101100101010");
m_Code39.Add("4", "1010011010110");
m_Code39.Add("5", "1101001101010");
m_Code39.Add("6", "1011001101010");
m_Code39.Add("7", "1010010110110");
m_Code39.Add("8", "1101001011010");
m_Code39.Add("9", "1011001011010");
m_Code39.Add("+", "1001010010010");
m_Code39.Add("-", "1001010110110");
m_Code39.Add("*", "1001011011010");
m_Code39.Add("/", "1001001010010");
m_Code39.Add("%", "1010010010010");
m_Code39.Add("$", "1001001001010");
m_Code39.Add(".", "1100101011010");
m_Code39.Add(" ", "1001101011010");
}
public enum Code39Model
{

Code39Normal,

Code39FullAscII
}

public Bitmap GetCodeImage(string p_Text, Code39Model p_Model, bool p_StarChar)
{
string _ValueText = "";
string _CodeText = "";
char[] _ValueChar = null;
switch (p_Model)
{
case Code39Model.Code39Normal:
_ValueText = p_Text.ToUpper();
break;
default:
_ValueChar = p_Text.ToCharArray();
for (int i = 0; i != _ValueChar.Length; i++)
{
if ((int)_ValueChar[i] >= 97 && (int)_ValueChar[i] <= 122)
{
_ValueText += "+" + _ValueChar[i].ToString().ToUpper();
}
else
{
_ValueText += _ValueChar[i].ToString();
}
}
break;
}

_ValueChar = _ValueText.ToCharArray();
if (p_StarChar == true) _CodeText += m_Code39["*"];
for (int i = 0; i != _ValueChar.Length; i++)
{
if (p_StarChar == true && _ValueChar[i] == '*') throw new Exception("帶有起始符號不能出現*");
object _CharCode = m_Code39[_ValueChar[i].ToString()];
if (_CharCode == null) throw new Exception("不可用的字元" + _ValueChar[i].ToString());
_CodeText += _CharCode.ToString();
}

if (p_StarChar == true) _CodeText += m_Code39["*"];

Bitmap _CodeBmp = GetImage(_CodeText);
GetViewImage(_CodeBmp, p_Text);
return _CodeBmp;
}

private Bitmap GetImage(string p_Text)
{
char[] _Value = p_Text.ToCharArray();

Bitmap _CodeImage = new Bitmap(_Value.Length * ((int)m_Magnify + 1), (int)m_Height);
Graphics _Garphics = Graphics.FromImage(_CodeImage);
_Garphics.FillRectangle(Brushes.White, new Rectangle(0, 0, _CodeImage.Width, _CodeImage.Height));
int _LenEx = 0;
for (int i = 0; i != _Value.Length; i++)
{
int _DrawWidth = m_Magnify + 1;
if (_Value[i] == '1')
{
_Garphics.FillRectangle(Brushes.Black, new Rectangle(_LenEx, 0, _DrawWidth, m_Height));
}
else
{
_Garphics.FillRectangle(Brushes.White, new Rectangle(_LenEx, 0, _DrawWidth, m_Height));
}
_LenEx += _DrawWidth;
}

_Garphics.Dispose();
return _CodeImage;
}

private void GetViewImage(Bitmap p_CodeImage, string p_Text)
{
if (m_ViewFont == null) return;
Graphics _Graphics = Graphics.FromImage(p_CodeImage);
SizeF _FontSize = _Graphics.MeasureString(p_Text, m_ViewFont);
if (_FontSize.Width > p_CodeImage.Width || _FontSize.Height > p_CodeImage.Height - 20)
{
_Graphics.Dispose();
return;
}
int _StarHeight = p_CodeImage.Height - (int)_FontSize.Height;
_Graphics.FillRectangle(Brushes.White, new Rectangle(0, _StarHeight, p_CodeImage.Width, (int)_FontSize.Height));
int _StarWidth = (p_CodeImage.Width - (int)_FontSize.Width) / 2;
_Graphics.DrawString(p_Text, m_ViewFont, Brushes.Black, _StarWidth, _StarHeight);
_Graphics.Dispose();
}

}

}

④ C語言源程序文件經過編譯連接之後生成一個後綴為_____的文件。

如果只生成一個文件,那麼這個題目答案是B。編譯(compile)後生成目標文件,後綴:.obj。也就是機器碼。

然後鏈接器(Linker) 連接生成可執行文件,後綴:.exe。最後運行命令(go),直接運行.exe文件。

(4)c代碼生成器源碼擴展閱讀:

簡單講,編譯器就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。

一個現代編譯器的主要工作流程:源代碼(source code) →預處理器(preprocessor) →編譯器(compiler) →目標代碼(object code) →鏈接器(Linker) → 可執行程序(executables)

高級計算機語言便於人編寫,閱讀交流,維護。機器語言是計算機能直接解讀、運行的。

編譯器將匯編或高級計算機語言源程序(Source program)作為輸入,翻譯成目標語言(Target language)機器代碼的等價程序。

源代碼一般為高級語言 (High-level language), 如Pascal、C、C++、Java、漢語編程等或匯編語言。

而目標則是機器語言的目標代碼(Object code),有時也稱作機器代碼(Machine code)。

對於C#、VB等高級語言而言,此時編譯器完成的功能是把源碼(SourceCode)編譯成通用中間語言(MSIL/CIL)的位元組碼(ByteCode)。

最後運行的時候通過通用語言運行庫的轉換,編程最終可以被CPU直接計算的機器碼(NativeCode)。

⑤ C語言隨機數生成器代碼解析

在C語言中,欲求正整數a到b(a < b)間的數的語句是:
rand()%(b - a) + a;
假如a = 50,b = 100,則
rand()%50 + 50;
因為 0 ≤ rand()%50 ≤ 49,所以rand()%50 + 50 的范圍是: 50 ~ 99

⑥ 【急】求C語言程序代碼!!!【交叉引用生成器】

#include<stdio.h>
#include<string.h>
int isword(char a[])
{
int i;
for(i=0;i<=strlen(a)-1;i++)
{
if(!(((a[i]>='a')&&(a[i]<='z'))||((a[i]>='A')&&(a[i]<='Z'))||((a[i]=='-')&&(i!=0))))
return 0;
}
return 1;
}
struct cross {
char dc[100];
int hs[1000];
};
main()
{
FILE *in,*out;
int i,j=0,hshs=1,k,bz=1,count,dcs=0,bbzz=0;
char temp[100]={0},khh;
struct cross a[200]={0},ls;
in=fopen("crossin.txt","r");
out=fopen("crossout.txt","w");
while((khh=fgetc(in))!=EOF)
{
if(khh=='\n')
{
hshs++;
continue;
}
else if(khh==' ')
continue;
else
{
ungetc(khh,in);
}
fscanf(in,"%s",temp);
bz=1;
for(i=0;(temp[i]!='\0')&&((temp[i]!='.')&&(temp[i]!=',')&&(temp[i]!='!')&&(temp[i]!='?')&&(temp[i]!=':')&&(temp[i]!=';'));i++);
temp[i]='\0';
for(i=0;i<200;i++)
{
if(strcmp(temp,a[i].dc)==0)
{
for(k=0;a[i].hs[k]!=0;k++);
a[i].hs[k]=hshs;
bz=0;
}
}
if(bz)
{
strcpy(a[j].dc,temp);
a[j++].hs[0]=hshs;
}
}
for(dcs=0;a[dcs].dc[0]!='\0';dcs++);
while(1)
{
count=0;
for(i=0;i<dcs-1;i++)
{
if(strcmp(a[i].dc,a[i+1].dc)>0)
{
ls=a[i];
a[i]=a[i+1];
a[i+1]=ls;
count++;
}
}
if(count==0)
break;
}
for(i=0;i<dcs;i++)
{
if((isword(a[i].dc))&&(strcmp(a[i].dc,"a")!=0)&&(strcmp(a[i].dc,"an")!=0)&&(strcmp(a[i].dc,"the")!=0)&&(strcmp(a[i].dc,"and")!=0))
{
fprintf(out,"%s:",a[i].dc);
for(j=0;a[i].hs[j]!=0;j++)
{
if(a[i].hs[j]!=a[i].hs[j+1])
{
if(bbzz)
fprintf(out,",");
fprintf(out,"%d",a[i].hs[j]);
bbzz=1;
}
}
fprintf(out,"\n");
}
bbzz=0;
}
fputc(' ',out);
fclose(in);
fclose(out);

}
你是北航的么- -

⑦ 如何用C語言 寫一個隨機數生成器的程序

#include <stdio.h>
#include <time.h>

void main()
{
int iNum = 0;

srand((unsigned)time(0));
iNum = rand() % 100 + 1; //隨機生成一個數,並對100取余,使它小於100(0~99)。再加1(1~100)
printf("%d\n", iNum); \\列印出來這個數
return;
}

如果想多生成幾個隨機數,可以有一個數組存儲,並用for循環實現隨機生成

int aiNum[10] = {0};
int iLoop = 0;

//隨機生成10個數
for ( iLoop = 0; iLoop < 10; iLoop++ )
{
aiNum[iLoop] = rand() % 100 + 1;
}

⑧ 求幾個比較有趣,簡單的C語言源代碼 小白自己敲著練一下手感

最簡單的模擬計時器:

#include<stdio.h>

#include<conio.h>

#include<windows.h>

int m=0,s=0,ms=0; //m是分 s是秒 ms是毫秒

//以下是5個自編函數

void csh( ); //初始化界面

void yinc(int x,int y); //隱藏游標的函數(y值設為0就會隱藏)

void jishi( ); //計時器運行(每100毫秒變化一次)

void Color (short x, short y); //設定顏色的函數(y設為0就是黑底)

void gtxy (int x, int y); //控制游標位置的函數

int main( ) //主函數

{ csh( );

getch( );

while(1)

{ jishi( );

Sleep(100); //間隔100毫秒

if( kbhit( ) )break; //有鍵按下就退出循環

}

return 0;

}

void csh( ) //初始化界面

{Color(14,0); //設定淡黃字配黑底

printf(「 計時器」);

Color(10,0); //設定淡綠字配黑底

printf(" ┌───────────┐");

printf(" │ │");

printf(" └───────────┘");

gtxy(10,4); //游標到屏幕第10列4行處輸出

Color(7,0); //恢復白字黑底

printf(" 00:00:00 ");

yinc(1,0 ); //隱藏游標(yinc代表隱藏)

return;

}

void jishi( ) //計時器運行

{ms+=1;

if(ms==10){s+=1;ms=0;}

if(s==60){m+=1;s=0;}

gtxy(10,4);

Color(9,0); //設定淡藍字配黑底

if(m>9) printf(" %d:",m);

else printf(" 0%d:",m);

Color(14,0); //設定淡黃字配黑底

if(s>9) printf("%d:",s);

else printf("0%d:",s);

Color(12,0); //設定淡紅字配黑底

printf("0%d",ms);

}

void gtxy (int x, int y) //控制游標位置的函數

{ COORD pos;

pos.X = x;

pos.Y = y;

SetConsoleCursorPosition ( GetStdHandle (STD_OUTPUT_HANDLE), pos );

}

void Color (short ForeColor= 7, short BackGroundColor= 0) //設定顏色的函數

{ HANDLE handle = GetStdHandle ( STD_OUTPUT_HANDLE );

SetConsoleTextAttribute ( handle, ForeColor + BackGroundColor * 0x10 );

}

void yinc(int x,int y) //隱藏游標的設置(gb代表游標)

{ CONSOLE_CURSOR_INFO gb={x,y}; //x為1-100,y為0就隱藏游標

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &gb);

}

⑨ 如何用C語言編一個密碼生成器

C語言實現密碼生成器,參考代碼如下:

#include

#include
#include


//constcharlower_chars[]="abcdefghijklmnopqrstuvwxyz";
//constcharupper_chars[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//constcharnumber_chars[]="0123456789";
constcharlower_chars[]="abcdefghijkmnpqrstuvwxyz";//noloro
constcharupper_chars[]="ABCDEFGHJKLMNPQRSTUVWXYZ";//noIorO
constcharnumber_chars[]="23456789";//no1or0
constcharspecial_chars[]="!@#$%^&*()-=_+[]{};:'"<>,.?/";


constint_ks_pass_len=17;


voidmkpass(charpass[_ks_pass_len+1])
{
inti=0,j=0,k=0,n=0;
n=_ks_pass_len/4;
for(;i<n;i++)
{
pass[i]=lower_chars[rand()%(strlen(lower_chars))];
pass[i+n]=upper_chars[rand()%(strlen(upper_chars))];
pass[i+2*n]=number_chars[rand()%(strlen(number_chars))];
pass[i+3*n]=special_chars[rand()%(strlen(special_chars))];
}


j=_ks_pass_len-4*n;
for(i=0;i<j;i&#43;&#43;){
pass[i+4*n]=special_chars[rand()%(strlen(special_chars))];
}


//字元亂序
for(i=0;i<32;i++)
{
j=rand()%(_ks_pass_len);
k=pass[j];
pass[j]=pass[i%_ks_pass_len];
pass[i%_ks_pass_len]=k;
}


pass[_ks_pass_len]='';
}


int_tmain(intargc,_TCHAR*argv[])
{
srand(time(0));
charszPass[_ks_pass_len+1];
for(inti=0;i<16;i++)
{
mkpass(szPass);
printf("%s ",szPass);
}
return0;
}<j;i&#43;&#43;)

⑩ 誰能用c語言篇出素數生成器.

#include<iostream>
using namespace std;

void main()
{
int i,n,co=0,flag=1;
for(n=2;n<10000&&co<1000;n++)
{
for(i=2;i<=n/2;i++)
if(n%i==0)
{flag=0;
break ;} //判斷是不是素數,不是的話就將標志flag設為0;

if(flag==0) //標志為0就跳到下一個數去
{
flag=1;
continue;
}

cout<<n<<" ";
co++;

}

cin.get();
}
//這是我寫的一個小程序,可以實現1000個素數的求解,因為對效率有要求,所以建議不要寫成函數調用,因為每次的調用和返回值都有較多的開銷。當然,我用的是一種很笨的演算法,樓主可以採用篩選法,那麼在循環的次數上要少很多的,不過這又有另一個問題,就是要將以前的素數全部有備份,那就要使用數組,最有效的當然是動態的數組。很明顯,這要加大空間的開銷,而且寫起來要麻煩一點
如果樓主特別的強調效率的話,可以將n和i設為register變數,這也有一點效
這個程序可以運行,最後一個數為7917

熱點內容
md5加密後的密碼是什麼意思 發布:2025-01-18 15:50:16 瀏覽:192
如何qq空間訪問許可權 發布:2025-01-18 15:49:30 瀏覽:531
matlab遺傳演算法約束 發布:2025-01-18 15:31:33 瀏覽:909
果凍java 發布:2025-01-18 15:25:59 瀏覽:695
電腦與時間伺服器同步間隔 發布:2025-01-18 15:21:28 瀏覽:54
蘋果手機apple登錄密碼在手機哪裡 發布:2025-01-18 15:13:43 瀏覽:380
吃雞去哪裡下手游安卓 發布:2025-01-18 15:10:59 瀏覽:668
東方財富dk指標源碼 發布:2025-01-18 14:45:53 瀏覽:435
陌陌登陸密碼是什麼 發布:2025-01-18 14:36:54 瀏覽:848
海龜編譯器代碼 發布:2025-01-18 14:16:51 瀏覽:34