【问题标题】:Segmentation fault using strcat using a single character使用 strcat 使用单个字符的分段错误
【发布时间】:2014-01-10 00:28:06
【问题描述】:

这是我的代码:

int min = 0, i, z;
char star[18][100] = {0};
int temp = 0;
char TheStar[2];
TheStar[0] = '*';
TheStar[1] = '\0';


for(i = 0; i < 17; i++){
    if(min == 0 && PerHundredThousand > 0)
     min = PerHundredThousand[i];
    if(PerHundredThousand[i] < min)
     min = PerHundredThousand[i];}


for(z = 0; z < 17; z--){
     if(PerHundredThousand[z] > 0)
      temp = PerHundredThousand[z] / min;
     while(temp > 0){
         strcat(star[z], TheStar);
         temp = temp - 1;}

}

如您所见,只要 temp 高于 0,我就尝试使用 strcat 添加一个“*”,但出现分段错误:

strcat(star[z], TheStar);

感谢任何帮助。提前致谢。

【问题讨论】:

  • PerHundredThousand &gt; 0 看起来也很可疑。

标签: c strcat


【解决方案1】:

第二个循环出现错误:

for(z = 0; z < 17; z--){

应该是:

for(z = 0; z < 17; z++){

否则它会比预期循环更多次(以及写入无效的数组位置)。

【讨论】:

  • 感谢我的办公桌差点摔坏了。
【解决方案2】:

在第一个循环中有一个错误

if(min == 0 && PerHundredThousand > 0) 

应该是

if(min == 0 && PerHundredThousand[i] > 0)

【讨论】:

    猜你喜欢
    • 2012-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 2020-10-05
    • 1970-01-01
    相关资源
    最近更新 更多