连接0';s用C串
我正在尝试将0添加到c字符串的末尾,以便总长度为100 例如,如果字符串是“hi”,我想加上98个0连接0';s用C串,c,string,C,String,我正在尝试将0添加到c字符串的末尾,以便总长度为100 例如,如果字符串是“hi”,我想加上98个0 最简单的方法是什么?100个字符的Malloc内存。Memset all characters为“0”,然后将前2个字符设置为hi。Malloc memory为100个字符。Memset all characters为“0”,然后将前两个字符设置为hi。尝试以下操作: static inline char *newPaddedStringToLength(const char *string,
最简单的方法是什么?100个字符的Malloc内存。Memset all characters为“0”,然后将前2个字符设置为hi。Malloc memory为100个字符。Memset all characters为“0”,然后将前两个字符设置为hi。尝试以下操作:
static inline char *newPaddedStringToLength(const char *string, const char character, unsigned length) {
if(strlen(string) >= length) return NULL;
char *newString = malloc(sizeof(char) * length);
memset(newString, character, length);
for(unsigned i = 0; i < strlen(string); ++i) {
newString[i] = string[i];
}
return newString;
}
char *string = "Blah";
char *padded = newPaddedStringToLength(string, '0', 100);
//...
if(padded) free(padded);
静态内联字符*newPaddedStringToLength(常量字符*string,常量字符,无符号长度){
if(strlen(string)>=length)返回NULL;
char*newString=malloc(sizeof(char)*长度);
memset(新闻字符串、字符、长度);
for(无符号i=0;i
尝试以下方法:
static inline char *newPaddedStringToLength(const char *string, const char character, unsigned length) {
if(strlen(string) >= length) return NULL;
char *newString = malloc(sizeof(char) * length);
memset(newString, character, length);
for(unsigned i = 0; i < strlen(string); ++i) {
newString[i] = string[i];
}
return newString;
}
char *string = "Blah";
char *padded = newPaddedStringToLength(string, '0', 100);
//...
if(padded) free(padded);
静态内联字符*newPaddedStringToLength(常量字符*string,常量字符,无符号长度){
if(strlen(string)>=length)返回NULL;
char*newString=malloc(sizeof(char)*长度);
memset(新闻字符串、字符、长度);
for(无符号i=0;i
1)我可以建议您改用NULL吗
2) C中没有字符串
我假设你正在研究某种二进制格式
如果您有一个字符数组,希望其长度为100个字符,则在ascii中字符表示为一个字节
您可以分配一个100字节长的字符数组
写h和i字节,应该有98个空字节。如果您确实想要零,则将0字节写入其余部分
您可以使用循环。1)我可以建议您改用NULL吗
2) C中没有字符串
我假设你正在研究某种二进制格式
如果您有一个字符数组,希望其长度为100个字符,则在ascii中字符表示为一个字节
您可以分配一个100字节长的字符数组
写h和i字节,应该有98个空字节。如果您确实想要零,则将0字节写入其余部分
您可以使用循环。提示一行程序
// this does exactly what you want
// first two chars are 'h' and 'i', all the rest are 0.
char myString[100] = {'h', 'i'};
提示一行
// this does exactly what you want
// first two chars are 'h' and 'i', all the rest are 0.
char myString[100] = {'h', 'i'};
这是初始化字符串的最简单方法
在这里,编译器将使用h
和i
的前两个字符,以及其他具有空字符(\0
或0
)的字符,但它们都是相同的
这是初始化字符串的最简单方法
在这里,编译器只会显示前两个字符,分别是
h
和i
,以及其他空字符(\0
或0
),它们都是相同的。不推荐使用家庭作业标记。查看侧栏=>您只需要添加97个零,因为C字符串已经有了一个。@kprobst哦,没有注意到这一点。谢谢你能澄清一下你想添加的是“\0”还是“0”吗?家庭作业标签不推荐使用。查看侧栏=>您只需要添加97个零,因为C字符串已经有了一个。@kprobst哦,没有注意到这一点。谢谢您能澄清一下您要添加的是“\0”还是“0”吗?NULL
不合适NULL
表示空指针常量(C实现可以将其定义为(void*)0
。我想我在想,这是否真的是二进制文件格式。你想要98个空字节吗?如果这是错误的,我将删除答案,我想我对格式化的二进制数据比实际的c更了解。我不知道除了二进制数据传输/存储之外,你为什么要实际执行询问者要求的操作。你如何表示二进制null\x00?例如,协议/格式中的固定字符串大小。如果您想要全位零字节,只需使用0
。为什么需要其他表示形式呢?我指的是整数文本0
,而不是char
literal'0'
null
,这是不合适的。null
表示空指针常量(C实现可以将其定义为(void*)0
。我想我在想,这是否真的是二进制文件格式。你想要98个空字节吗?如果这是错误的,我将删除答案,我想我对格式化的二进制数据比实际的c更了解。我不知道除了二进制数据传输/存储之外,你为什么要实际执行询问者要求的操作。你如何表示二进制null\x00?例如,协议/格式中的固定字符串大小。如果您想要全位零字节,只需使用0
。为什么需要其他表示形式?我指的是整数文本0
,而不是char
literal'0'
。真的吗?如何将其打印到控制台?@JacobRelkin,我不认为这是问题中的一个要求?您是否假设有控制台?是的,如果我调用printf(“%s”,myString)
我应该看到嗨
加98个零。@JacobRelkin,是的,如果你对malloc没意见的话,你当然可以。这是OP的另一个不错的选择。真的吗?你怎么能把它打印到控制台上?@JacobRelkin,我在问题中没有把它作为一个要求?你假设有一个控制台吗?是的,如果我调用printf(“%s”我应该看到hi
加上98个零。@JacobRelkin,是的,如果你对malloc满意的话,你当然可以。这是OP的另一个不错的选择。