我在压缩字符串。 并且压缩字符串有时在结束NULL之前具有NULL字符。 我想返回字符串直到结束null。但压缩器函数返回sting直到第一个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; 压缩器function的所有其他字符都不在这里。 有没有办法显示所有字符串。
#include #include char* func(char *str, int *length) { int i; *length=9;//Put string length you calculated str=(char*)malloc(*length*sizeof(char)); for(i=0;i<5;i++) str[i]=i+65; str[5]=0; str[6]=65; str[7]=67; str[8]=0; return str; } int main() { char *str; int i,length=0; str=func("Muhammad Ashikuzzaman",&length); for(i=0;i
该函数返回“整个字符串”。 它是printf,输出它直到遇到空字符。
您可以通过以下方式定义function
char * compressor( const char* source, size_t *result_len );
要了解此问题,请考虑以下代码
#include char * compressor( const char* source, size_t *result_len ) { char *compressed_string = "bk dk"; *result_len = sizeof( "bk dk" ); 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
使用std::string
解决方案:
#include #include #include std::string compressor(char* str) { char *compressed_string; int len; // this is the size of the compressed data //... // compress the data and assume that len has the number of characters //... std::string theString(compressed_string, len); // clean up any memory here. //... return theString; } using namespace std; int main() { std::string str = compressor("Muhammad Ashikuzzaman"); std::copy(str.begin(), str.end(), std::ostream_iterator(cout,"")); }
注意std :: string的用法,以及如何使用copy
算法函数输出信息。 使用copy
而不是printf
的原因是为了确保打印所有字符,包括(不可见的)嵌入的NULL。
此外,通过调用str::size()
可以轻松检索压缩数据的str::size()
。
以上就是c/c++开发分享从C中具有多个NULL’ 0’的函数返回字符串相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/522541.html