【发布时间】:2012-10-31 05:56:14
【问题描述】:
以下是我的代码的相关位:
//helper function that prints "------" lines or " " lines
void li(char* a, int len)
{
int i;
for (i=0; i<len; i++)
{
printf("%c",a);
}
}
//helper function that prints out bar
void bar(int length, int height)
{
int i;
//prints out top line
li("-", length);
//prints middle lines of spaces and "|"
for (i=0;i<height-2;i++) {
printf("\n");
li(" ", 6);
printf("|");
li(" ", length-2);
printf("|");
}
//prints bottom line
if (height>=2){
printf("\n");
li(" ", 6);
li("-", length);}
return ;
}
预期输出:
The: ------------
| |
------------
实际输出
The: ��������������
������|�������������|
���������������������
^^那些应该是未知字符。
不管怎样,我已经尝试解决这个问题,但到目前为止还没有成功。发生这种情况的原因是什么?
【问题讨论】:
-
当它期望
printf时将char *传递给printf是未定义的行为,很可能会导致这种情况。 -
printf("%c",*a);缺少*? -
@Als:应该是
a[i],而不是*a。