使用 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';
这是我遇到问题的函数。主要是末尾的 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';