You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言返回char*的makeString函数无输出问题求助

问题分析与解决

你的代码问题出在数组下标处理上:

  1. C语言数组下标从0开始,你循环从i=1开始赋值,导致finalString[0]是malloc分配的随机值(大概率是空字符'\0'),而printf("%s")遇到第一个'\0'就停止输出,所以看不到任何内容。
  2. 你最后执行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 02:35:23