【发布时间】:2013-01-05 10:53:20
【问题描述】:
我有一个非常简单的函数,它只是将一个 char 转换为一个 char*,它表示 char 的二进制值,其中 0 和 1 作为字符。
char* stringToBin(char symbol) {
int pos = 0;
int value = (int) symbol;
int rest;
char* result = (char*) malloc(sizeof(char) * 9);
while(value > 0) {
if(value % 2 == 0) {
result[7-pos] = '0';
}
else {
result[7-pos] = '1';
}
pos++;
value = value / 2;
}
while(pos < 8) {
result[7-pos] = '0';
pos++;
}
result[8] = '\0';
puts(result);
puts(strlen(result));
return result;
}
我的问题是我无法打印 char* 的长度。打印整个 char* 效果很好,但不计算大小。我总是遇到分段错误。我认为问题很简单,但我现在没有得到它。所以请给我缺少的提示;)
【问题讨论】:
-
请构造一个完整的SSCCE test-case,包括导致问题的输入。
-
标准提示:使用所有警告和调试信息进行编译(例如 Linux 上的
gcc -Wall -g)并使用调试器(例如gdb) -
价值可能是负数吗?
-
两者都不是。
puts(strlen(result));是问题所在。
标签: c char segmentation-fault