c - 从 C 中具有多个 NULL '\0' 的函数返回字符串

标签 c string compression clr

我正在压缩字符串。并且压缩字符串有时在结尾 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/

相关文章:

c - Pthread返回结果

c++ - OpenMP 仅使用一个线程

c - 非可移植指针转换

java - 我什么时候应该使用 String s = new String ("Hello World")?

c# - 将一串数字加密为一串字母数字

php - 哪段 PHP 代码更快?

android - 在 Android 中解压 Rar 文件

C 语言中的 Ctrl+Z 信号处理

c++ - 如何使用交换函数和指针就地反转字符串数组? (C++)

c - 确定 C 字符串是否是 C 中的有效 int