所以我从一个文件读取到一个缓冲区。默认情况下,此方法不为空终止我的字符串。
size_t result;
size_t total = 0;
/* Get the file size */
FILE* pfile;
pfile = fopen(filename, "rb");
fseek(pfile, 0, SEEK_END);
long lfile = ftell(pfile);
rewind(pfile);
char* file_buffer = malloc(sizeof(char) * lfile);
while ((result = fread(file_buffer, 1, lfile, pfile)) > 0)
{
total += result;
}
resp->content_length = lfile;
file_buffer[lfile] = '\0'; //so I try to null terminate it here.
但是我的1号写的是无效的。我做错什么了?
有没有其他方法可以空终止缓冲区中的内容?
最佳答案
在调用malloc
时,字符串长度的计算似乎是错误的。必须添加1
才能解释0
字符。
编辑:顺便说一句,你使用sizeof(char)
是。。。没用。sizeof
和malloc
的定义是,它们按achar
的大小计数,因此sizeof(char)
将始终是1
。
关于c - 在非null终止的“字符串”的末尾添加“\0”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20387600/