奇怪的行为printf()每行调用10-13次

时间:2013-09-28 22:28:38

标签: c++ c printf

我编写了这个函数,使用printf()

将2D矢量写入stdio
static void printSheet ( const storage::twoDVec& Sheet, char format='g'
                       , char elDelim='\t', char vecDelim='\n') 

    const size_t vecSize = Sheet.vecSize;
    const size_t subVecSize = Sheet.subVecSize;
    char pFormat[3] = {'%', format, elDelim};
    for ( size_t y = 0; y < vecSize; y++ ) {
        for ( size_t x = 0; x < subVecSize; x++ ) {
            printf(pFormat, Sheet.get( y, x ));
        }
    putchar(vecDelim);
    }
}

除非[10,13]中subVecSize,否则格式不是

,效果很好
x x x
x x x
x x x

subVecSize = 10

1
2
...
9
10

1
2
...
9
10

(重复)。对于1112,subVectors对角滚动,而13子向量会自行覆盖。 例如如果vecSize==1 && subVecSize==3那么我只得到一个数字作为输出。

我是否在寻找某些事情或者我不理解printf()的基本内容?将elDelim更改为' '不会改变它。

1 个答案:

答案 0 :(得分:5)

您的pFormat数组未终止。试试这个

char pFormat[4] = {'%', format, elDelim, '\0'};