gpt4 book ai didi

python - C 中的数组恶作剧

转载 作者:行者123 更新时间:2023-11-28 20:42:36 26 4
gpt4 key购买 nike

我必须制作一个一维元胞自动机并在 C 中实现它的任何规则。

在进入 C 语言之前(老实说,这不是我的强项),我在 python 中仅使用固定数组并仅使用 for 和 while 循环(使其直接进入端口)对其进行编码。我的问题是,在 Python 中,我有这段代码:

def bin(n):
aux = 7
bin = ''
while aux>=0:
if 2**aux <= n:
n-=2**aux
bin += '1'
else:
bin+='0'
aux-=1
return list(bin)

regla = bin(30)
print regla
ancho = 8
alto = 8
vector = []
valores_regla = ['111','110','101','100','011','010','001','000']

for i in range(ancho):
vector.append('0')
vector[ancho/2]='1'

archivo = open('Imagen.pbm','w')
archivo.write('P1 '+str(ancho)+ ' ' + str(alto)+'\n')

aux = []
for y in range(alto):
for x in range(len(vector)):
i=x-1
c=x
d=x+1
if x == 0:
i=len(vector)-1
if x == len(vector)-1:
d=0
for z in range(8):
if vector[i]+vector[c]+vector[d] == valores_regla[z]:
aux.append(regla[z])
archivo.write( ''.join(aux) + '\n')
vector = aux
aux = []

print 'Terminado'
archivo.close()

基本上,我将我的整数转换为一个 1 字节的二进制字符串,然后将其规则分配给一个数组(Valores_Regla,基本上,二进制计数为 0 到 7);然后我继续遍历 vector ,如果找到与规则的匹配项,则将其附加到空数组 (Aux),将该数组写入文件,然后使我的旧 vector=Aux。

此代码运行良好,并在 n=alto 迭代后生成元胞自动机的 .pbm 图像。现在在 C 中,我几乎逐行移植了这段代码,并且它几乎 工作了。

我的问题是当我尝试将新值“附加”到数组时。我也创建了一个 Aux 数组,用 0 填充。然后我进行相同的循环,检查规则,如果匹配,则我将新值分配给 aux 数组中的等效 x 位置。到目前为止,它可以完美运行:

#include <stdio.h>
#include <string.h>

char bufer[3];

bufer[0] =array[l];
bufer[1] = array[c];
bufer[2] = array[r];
bufer[3] = '\0';

当我尝试将 Aux 数组的内容复制到 Array 数组时,问题出现了。它变得一团糟。

我对代码进行了两次和三次检查,没有发现任何错误。我什至没有分配内存,我正在使用静态数组。我一无所知。感谢您的帮助。

最佳答案

您至少有一次缓冲区溢出:

char bufer[3];
bufer[3] = '\0';

bufer 的大小必须为 4。

关于python - C 中的数组恶作剧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30316764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com