返回char*的C函数未生成任何输出



我对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++)
...

等等

相关内容

最新更新