我正在学习 C,并且编写了一个简单的程序(只是晒黑)。输入时,您传递两个参数(行和列),输出时您会获得该单元格的 Calc(或 Excel)代码。
例如:
Input: 3 1 Output: A3
Input: 1 27 Output: AA1
代码:
#include <stdio.h>
char kol[7] = "";
unsigned int passes=0, nr;
int powa(unsigned int lv)
{
if(passes < nr)
{
if(kol[lv] == '\0')
{
kol[lv] = 'A';
kol[lv+1] = '\0';
} else
{
kol[lv]++;
if(kol[lv] == 'Z'+1)
{
kol[lv] = 'A';
powa(lv+1);
return 0;
}
}
passes++;
if(lv != 0)
{
powa(lv-1);
} else
{
powa(lv);
}
}
}
int main(void)
{
unsigned int wier;
int i, len=0;
scanf("%u %u", &wier, &nr);
powa(0);
while(kol[len] != '\0')
{
len++;
}
for(i=len-1;i>=0;i--)
{
putchar(kol[i]);
}
printf("%u", wier);
return 0;
}
但如果我传入一个更大的值(例如 300000000),我会收到分段错误错误。为什么?
您只分配 7 个字节kol
。您试图写入超出数组的范围。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)