Pythonで簡単なc言語のファイルを作成
たくさんのバイナリファイルを作るにあたりc言語のプログラムファイルが必要だったのでPythonでチャチャチャと作った。その回顧録です。
c言語のプログラムファイルを作成
数値計算を含まない
文字列をprintfするだけのC言語ファイルを100個作るものです。
文字列は、英字の大文字・小文字を5~100文字をランダムに生成したものです。
from random import randint
x_lay = "abcdefghijklmopqrstuvwxyz"
X_lay = str.upper(x_lay)
lay = x_lay + X_lay
laylist = list(lay)
#print(laylist)
#['a', 'b', 'c', 'd'....
for i in range(100):
str = ""
strlen = randint(5, 100)
for k in range(strlen):
t = randint(0, 45)
str += laylist[t]
txt = "#include <stdio.h> \nint main(void){\nprintf(\""
txt = txt+str+"\");\n}"
filename = f"hoge/hoge{i}.c"
with open(filename, mode="w") as f:
s = f.write(txt)
これを変数strの生成を行っているところでinputを使うとキーボードで入力したものが表示されるプログラムファイルが作成できる。
数値計算を含む
これは数値計算をするC言語のプログラムファイルを100個作るものです。
変数txにそれぞれ[a,b,c,d,e]に数値を入れています。
for文でランダムな数字を生成してその長さの式が生成されます。
import random
txt = "#include <stdio.h> \nint main(void){\n"
tx = "int a = 2;\nint b = 3;\nfloat c = 2.34;\nfloat d = 5.98;\nint e = 100;\nfloat x = "
entxt = "\n}"
numlen = ["+","-","*","/"]
var = ["a", "b", "c", "d", "e"]
eof = ";"
for i in range(100):
m = random.randint(1, 10)
oppo = txt + tx
for k in range(m):
oppo += random.choice(var)
oppo += random.choice(numlen)
oppo += random.choice(var)
oppo += eof + entxt
filename = f"hoge/hoge{i}.c"
with open(filename, mode="w") as f:
f.write(oppo)
コンパイル
まとめてコンパイルする時は、for文を使うといいかも‼
lsの-1オプションでファイル名だけを1行ずつ表示してくれる。
呼び出されたファイル名を変数iに入れてコンパイルする。この時に-oオプションがないと同じバイナリファイルを上書きしていくだけなで、変数iを使ってそれぞれ違う名前のファイルを作成していく。
for i in `ls -1 *.c`
do
gcc $i -o con$i
done
Author And Source
この問題について(Pythonで簡単なc言語のファイルを作成), 我々は、より多くの情報をここで見つけました https://qiita.com/KAZU-kaa/items/28ae1f45b509e089ce8b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .