这是我遇到问题的功能。主要是最后的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) != '\0') {
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
答案 0 :(得分:0)
char thisName[size];
此后
memset(thisName,0,sizeof(thisName));
%s
期望一个以空字符结尾的字符串。或退出循环后
thisName[size] = '\0';
编辑:
数组大小应足够大,以容纳字符串的空终止。
char thisName[size + 1];
答案 1 :(得分:0)
char * name,* ptr;
ptr = name =&amp;(tagCounters [ndx] - &gt; tagName [0]);
while(* ptr!='\ 0') PTR ++;
size = ptr - name;
在printf之前:
thisName [size] ='\ 0';