我创建了一个名为aux
的字符,我只需要作为变量来处理a
字符的后缀,并检查这些后缀是否是b
字符的前缀。所以,我试图在每次迭代时覆盖这个aux
字符(或者如果我可以说,为了使它“空”并准备下一次迭代,当程序将在其中写入迭代中的字符i+1
)这样我就不需要大尺寸的aux
,而且我真的不想冒险从前一次迭代中获得aux
个字符。那么,我如何将它变为空,或者如何覆盖char,特别是如果在i+k
迭代中程序将发送比前一次迭代更少的字符,所以它不能真正覆盖,因为它有更少的字符,我们最终可能会在aux
中的2次迭代中找到字符。以下是我试图这样做的路线。 min
是strlen(a)
和strlen(b)
之间的最小值,na
是strlen(a)
。算法运行正常,但我要为{{{ 1}} ...就像aux
。
aux[100]
答案 0 :(得分:2)
将aux
的第一个元素设置为\0
或使用memset(aux, 0, sizeof(aux))
编辑:
aux[0] = '\0';
将结束符号放在字符串的开头,使其为空。因此,如果再次复制到此(空)字符串,复制的数据将覆盖以前写入的数据,从而提高内存处理效率,这是此问题的确切目标。
答案 1 :(得分:1)
根据您的代码,变量conn = psycopg2.connect("dbname='test1' user='postgres' host='localhost' password='123'")
cur = conn.cursor()
query = "INSERT INTO product_info (product_name) VALUES (%s);"
data = ("ss")
cur.execute(query, data)
conn.commit()
必须足够大,以包含aux
指向的整个变量,因此,如果您已声明要变量,例如{ {1}}那么你还需要a
,它不能更小......
另一方面,要在每次迭代时重置char a[50];
,只需将char aux[50];
写为循环内的第一行......
答案 2 :(得分:1)
您在na
和nb
填充输入之前正在初始化a
和b
,因此您将从strlen
获得随机大小。试一试,你会看到。因此,您的算法会中断。
尝试将其移到输入下方。
cout << "Define a:";
cin >> a;
cout << "Define b:";
cin >> b;
cout << endl;
na = strlen(a);
nb = strlen(b);
if (na < nb)
min = na;
else
min = nb;
我已尝试使用此订单,它按预期工作,无需aux[0] = '\0';