C语言返回char*的makeString函数无输出问题求助
问题分析与解决
你的代码问题出在数组下标处理上:
- C语言数组下标从0开始,你循环从
i=1开始赋值,导致finalString[0]是malloc分配的随机值(大概率是空字符'\0'),而printf("%s")遇到第一个'\0'就停止输出,所以看不到任何内容。 - 你最后执行
finalString[count]=0;,会把循环中最后赋值的finalString[count](当i=count时的字符)覆盖成结束符,等于少生成了一个目标字符。
修正后的代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> char* makeString(char character,int count) { int i; char* finalString=malloc(count+1); // 从下标0开始,填充count个字符 for(i=0;i<count;i++) { finalString[i]=character; } // 在有效字符末尾设置字符串结束符 finalString[count]='\0'; return finalString; } int main() { char* string=makeString('*',5); printf("%s\n",string); // 释放动态分配的内存,避免泄漏 free(string); }
补充说明:
- 循环范围改为
0 <= i < count,确保刚好填充count个目标字符到数组的前count个位置。 finalString[count]='\0';正确放置字符串结束符,保证printf能正常识别完整字符串。- 新增
free(string);:动态分配的内存使用完毕后记得释放,这是C语言的良好编程习惯,避免内存泄漏。
内容的提问来源于stack exchange,提问作者Sierra Walker
相关产品推荐
相关产品推荐

