【发布时间】:2019-05-08 03:42:34
【问题描述】:
我正在将字符串作为字节写入文件,然后想使用 strtol 将二进制代码作为字符串读回。我检查了二进制文件,它包含我使用 xxd -b 文件名包含的字母的二进制文件。但是,当我尝试将其读回并将其转换为字符串时,它会出现分段错误 11。不确定我做错了什么。
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE* fr = fopen("kot.bin", "wb+");
size_t written = fwrite("n", 1, 1, fr);
printf("written is: %zu\n", written);
fclose(fr);
FILE* fw = fopen("kot.bin", "rb");
char * name;
size_t red = 0;
red = fread(name, 1, 1, fw);
if (red==0) {
printf("ur wrong\n");
}
printf("red: %zu\n", red);
char c = (char) strtol(name, NULL, 2);
printf("c: %c\n", c);
return 0;
}
我只是想在缓冲区中存储一个字节,使用 strtol 将其变成一个字符并打印出来。
【问题讨论】:
-
欢迎来到 Stack Overflow。您忽略了分配内存来读取字节。我推荐
name = (char*)malloc(1);。 -
@Beta,这将是一个绝妙的答案。
-
哦,伙计。感谢那。我认为我使用 strtol 有问题,我以前从未真正使用过它。虽然分段错误现在消失了,但当我尝试打印 c 时,它似乎是空的。关于为什么会这样的任何想法?