sou*_*ver 0 c char segmentation-fault
我有一个非常简单的函数,只需将char转换为char*,它表示char的二进制值,0和1为chars.
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;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我无法打印char*的长度.打印整个char*工作完美,但不计算大小.我总是得到一个分段错误.我认为这个问题很简单,但我现在没办法解决.所以请给我一些缺失的提示;)
小智 11
问题不在于你的字符串的NUL终止,这很好.代替,
puts(strlen(result));
Run Code Online (Sandbox Code Playgroud)
是错的.puts()期待一个C字符串,你给它一个size_t.改为写:
printf("%zu\n", strlen(result));
Run Code Online (Sandbox Code Playgroud)
(这里假定C99格式说明%zu的size_t是可用的.如果不是这样,那么使用:
printf("%u\n", (unsigned)strlen(result));
Run Code Online (Sandbox Code Playgroud)
代替.)