使用 printf() 添加不需要的 space/lines 的格式化输出 - C 编程

Formatted output using printf() adding unwanted space/lines - C Programming

这是我遇到问题的函数。主要是末尾的 printf 语句。我是 C 语言的新手,但我觉得这是一个不寻常的结果。非常感激任何的帮助!

void frequencies(char htmlDoc[]) {
    tags(htmlDoc, 0);
    int ndx;
    //  struct tagCounter *pCursor = tagCounters[0];
    int size = 1;
    char *name;
    for (ndx = 0; ndx < tagCntSize; ndx++) {
        name = &(tagCounters[ndx]->tagName[0]);
        while (*(name + 1) != '[=11=]') {
            size++;
            name++;
        }
    name = &(tagCounters[ndx]->tagName[0]);
    char thisName[size];
    int index;
    int thisCount = tagCounters[ndx]->tagCount;
    for (index = 0; index < size; index++) {
        thisName[index] = *name;
        name++;
    }
    printf("%s\t%i\n", thisName, thisCount);
    }
}

这是结果输出:

img
�   1
img
    1
img
    1
img
    1
img
    1
img
    1
Ready
char thisName[size];

之后做

memset(thisName,0,sizeof(thisName));

%s 需要一个以空字符结尾的字符串。或者退出循环后

thisName[size] = '[=12=]';

编辑:

数组大小应足以容纳字符串的空终止符。

char thisName[size + 1];

char *name, *ptr;

ptr = 名称 = &(tagCounters[ndx]->tagName[0]);

while (*ptr != '\0') ptr++;

size = ptr - 名称;

打印前:

这个名字[大小] = '\0';