合計の長さが 100 になるように、ac 文字列の末尾に 0 を追加しようとしています。
たとえば、文字列が「hi」の場合、98 個の 0 を追加します。
これを行う最も簡単な方法は何ですか?
100 文字分の malloc メモリ。memset すべての文字を '0' に設定し、最初の 2 文字を hi に設定します。
ワンライナーをキューに入れましょう!
// this does exactly what you want
// first two chars are 'h' and 'i', all the rest are 0.
char myString[100] = {'h', 'i'};
string name[100] = {'h', 'i'}'
これは、文字列を初期化する最も簡単な方法です。
ここで、コンパイラーは最初の 2 文字とh
およびi
ヌル文字 (\0
または0
) を持つ他の文字はどちらも同じです。
次のようなことを試してください:
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);
1) 代わりに NULL を使用することを提案できますか?
2) C には文字列はありません。
ある種のバイナリ形式で作業していると思います。
100文字にしたいchar配列がある場合、charはASCIIのバイトとして表されます。
100 バイト長の char 配列を割り当てることができます
h バイトと i バイトを書き込むと、98 個の null バイトが必要です。実際にゼロが必要な場合は、残りに 0 バイトを書き込みます。
ループを使用できます。