我正在压缩字符串。并且压缩字符串有时在结尾 NULL 之前包含 NULL 字符。我想返回字符串直到 null 结束。但是压缩器函数正在返回字符串,直到出现第一个 NULL。请帮助我。
char* compressor(char* str)
{
char *compressed_string;
//After some calculation
compressed_string="bk`NULL`dk";// at the last here is automatic an NULL we all know
return compressed_string;
}
void main()
{
char* str;
str=compressor("Muhammad Ashikuzzaman");
printf("Compressed Value = %s",str);
}
输出是:压缩值= bk; 压缩函数中的所有其他字符都不在这里。有没有办法显示所有的字符串。
最佳答案
该函数返回“整个字符串”。 printf 输出它直到遇到空字符。
你可以这样定义函数
char * compressor( const char* source, size_t *result_len );
要理解问题,请考虑以下代码
#include <stdio.h>
char * compressor( const char* source, size_t *result_len )
{
char *compressed_string = "bk\0dk";
*result_len = sizeof( "bk\0dk" );
return compressed_string;
}
int main( void )
{
char* str;
size_t n;
str = compressor( "Muhammad Ashikuzzaman", &n );
int i;
printf( "Compressed Value = " );
for ( char *p = str; n; n -= i + 1, p += i + 1 )
{
i = printf( "%s", p );
}
return 0;
}
输出是
Compressed Value = bkdk
关于c - 从 C 中具有多个 NULL '\0' 的函数返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25835422/