c - 函数返回意外值

标签 c arrays string output

我写了一个这样的函数,当参数 x 为偶数时,它无法按预期工作,例如,如果我输入 printf("%s",maxCharac(2 )) 在 main 中,它将打印“aa”及其旁边的一个额外字符,但如果是奇数,则可以正常工作。

char *maxCharac(int x)
{
    char *str=(char*)malloc(sizeof(char)*x);
    for(int i=0;i<x;i++)
    {            
        str[i]='a';
    }
    return str;   
}

最佳答案

C 中的字符串需要以 NUL ('\0') 字符结尾,因此您始终必须分配一个额外的空间来存储它。这是您的代码已更正以修复该问题。

char *maxCharac(int x)
{
    char *str=malloc(sizeof(char)*(x+1));
    for(int i=0;i<x;i++)
    {            
        str[i]='a';
    }
    str[x]='\0';
    return str;   
}

关于c - 函数返回意外值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45696463/

相关文章:

c - 在井字棋盘中宣布获胜者

c - 读取一个日志文件并以指定的格式写入其他文件

java - 如何复制二维字符串数组?

c - 如何在C中输入char*?

javascript - 正则表达式匹配由点分隔的字符串,只能包含字母数字、连字符、下划线、点

javascript字符串打破快速 Handlebars 中的元标记

java - 滚动哈希溢出/负结果保护

c - 如何交换指针数组中的元素

java - 使用 map 检查是否包含数组。但不起作用

c - 在这个程序的什么时候我们会收到段错误?