当前位置:首页 » 操作系统 » 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

热点内容
文件夹怎么打开 发布:2025-01-18 18:47:07 浏览:296
杉德卡卡号和密码看哪里 发布:2025-01-18 18:43:27 浏览:712
android返回退出 发布:2025-01-18 18:43:26 浏览:601
linux采集视频 发布:2025-01-18 18:38:38 浏览:638
差异度算法 发布:2025-01-18 18:34:27 浏览:698
电脑全套配置有哪些 发布:2025-01-18 18:32:39 浏览:145
新项目源码 发布:2025-01-18 18:14:48 浏览:517
脚本设计图 发布:2025-01-18 18:06:17 浏览:601
内部存储空间不足总是跳出来 发布:2025-01-18 17:56:22 浏览:951
安卓光遇更新后魔法商店去哪里了 发布:2025-01-18 17:55:47 浏览:133