Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接0';s用C串_C_String - Fatal编程技术网

连接0';s用C串

连接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,

我正在尝试将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, 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的另一个不错的选择。