除非包含 printf(),否则 C 循环会抛出错误?

标签 c printf

我在 C 中有一个函数:

int concanatedProduct(int n, int x, int size)
{
    char numberString[10];
    long arr[size];
    int cnt = 0;

    long product = 0;
    int digit = n;
    while (digit!=0) {

        product = x * (digit % 10); // Multiply by last digit
        arr[cnt] = product; // add to array
        cnt++; // increment count
        digit /= 10; // chop off last dig

    }

    for (int i=size-1; i>=0; i--) { // reverse the number to make it the right way
        //printf("%ld", arr[i]);
        sprintf(numberString, "%s%ld",numberString, arr[i]);
    }

        return atoi(numberString);
}

当我在循环外使用它时它工作正常。但是,当我尝试将它放入 for 循环时,它会抛出 SIGBART 错误,除非我包含 printf。

这个有效:

for (int i=1; i<10; i++) {
        x = concanatedProduct(12, i, 2);
        printf("%d\n", x);
    }

这会引发错误:

for (int i=1; i<10; i++) {
        x = concanatedProduct(12, i, 2);
    }

这到底是怎么回事?这让我完全难住了。

最佳答案

在您第一次调用 sprintf 时,numberString 未初始化,导致出现此类行为。

关于除非包含 printf(),否则 C 循环会抛出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10771923/

相关文章:

c - 消息帕克 : How to compose an array of maps in msgpuck?

c - 在这种情况下最好使用哪种流程

objective-c - 音频缓冲区代码中的内存不断增长

c - 如何从C代码中获取SIMD代码

variables - 在 MATLAB 中使用 sprintf 显示变量的小数

C- fprintf 两个变量在同一行

c - 如何修改TCP拥塞算法?

c - printf 打印出错误的值

c++ - 带有 const char* 变量的 printf 问题

c - 简单的 C 程序未打印