我对C还很陌生,所以如果这是一个直接的问题,我很抱歉,但我似乎找不到我的错误。我的代码如下
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* makeString(char character,int count)
{
int i;
char* finalString=malloc(count+1);
for(i=1;i<=count;i++)
{
finalString[i]=character;
}
finalString[count]=0;
return finalString;
}
int main()
{
char* string=makeString('*',5);
printf("%sn",string);
}
我正在尝试获取finalString的输出,它将是"character","count"次数。我没有收到任何错误或警告,但它没有生成任何输出。调试时,它成功地运行了循环,但从不将任何字符存储到finalString中。感谢您的帮助。
与许多编程语言一样,C对数组使用基于0的索引。finalString
处的字符数组的第一个元素是finalString[0]
,而不是finalString[1]
。
您的for
循环应该从0
转到count - 1
,而不是从1
转到count
。线路:
for(i = 1; i <= count; i++)
应该是:
for(i = 0; i < count; i++)
现在,您的代码有未定义的行为,因为您试图打印未初始化的finalString[0]
。在这种情况下,它似乎是0
(' '
(。
我忽略了makeString
缺少其结束}
这一事实,因为您认为这是正确编译的,我认为这是粘贴错误。
C中的数组从0开始,即第一个元素是finalString[0]。
由于您没有设置它,它包含垃圾,很可能还有一个NUL,它会立即结束字符串。
你的循环应该看起来像
for(i=0;i<count;i++)
...
等等