C:如何为字符串分配准确数量的字节?

标签 c string

这是我的函数。

char * substring(int begin, int end, char * string)
{
int size = end - begin + 1;
char * s = (char *)malloc (sizeof(size));

int i; 

for (i = 0; i < size; i++)
{
    s[i] = string[begin++];
}

return s;
}

假设我的字符串应该只是“I”。但是当我稍后尝试打印出字符串时,我得到了 I + 3 个意外的额外字符。我该如何解决这个问题?

最佳答案

首先,换行

char * s = (char *)malloc (sizeof(size));

char * s = malloc( size + 1 ); // + 1 for null terminator

sizeof(size) 给你一个整数的字节数(2 到 4 到 8 取决于你的平台),这不一定是你想要的。

接下来,使用strncpy函数复制string的前size个字符:

strncpy( s, string, size );

确保字符串以 null 结尾:

s[size] = '\0';

关于C:如何为字符串分配准确数量的字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21506677/

相关文章:

c++ - CPP for循环遍历字符串的字符从意外索引开始?

c - 基本 C 程序已停止工作 : just in time debugger

c - 内核模块中的调试堆栈溢出

无法弄清楚如何通过 USB 将数据从 stm32f103c8 发送到 PC

c# - 字符串枚举值已修改

c# - 计算字符串中句子的个数

java - Java 的 TrimEnd?

c - 为什么会出现编译错误?

c - 最后通过一个循环,在函数调用时表现出奇怪和隐含的错误?

string - 在 smlnj 中,您如何将 "string option"转换为 "string"?