[解決済み] C言語で配列の全要素をクリアする方法は?
2022-03-04 18:39:10
質問
volatile static uint8_t buffer[16];
void ResetBuffer(){
for(int i=strlen((char*)buffer);i>=0;i--) buffer[i]='\0';
}
バッファ変数はマイコン内で常に使用する必要があるため、volatile staticとグローバル変数を使っています。 しかし、すべてのバッファをクリアにするために、このようなコードで良いのでしょうか?もし、間違っていたり、他に簡単なコードがあれば、簡単なコードを教えてください。
わかりやすくするならば、最初の要素を空にしてしまえばいいと聞いたことがあります。 でも、そうすると他の要素が残ってしまうんです。
非常に単純な質問であることは承知しています。 しかし、私は混乱しています。普段はC++やJavaでプログラミングをしていたので、Cでプログラミングをするのはかなり戸惑います。
どのように解決するのですか?
を使用しています。
strlen()
これは、バッファの内容が有効な文字列であることに依存しており、バッファ全体をクリアしているわけではありません。
ただ
memset()
と共に
sizeof
:
memset(buffer, 0, sizeof buffer);
なお
sizeof
は関数ではないので、このような場合には括弧は必要ない(というか、使うべきだと私は思います)。
C言語ライブラリに
memset()
もちろん、普通のループでも構いません。
for(size_t i = 0; i < sizeof buffer; ++i)
buffer[i] = 0;
使用されている部分だけクリアしたい、有効な文字列であることが分かっていれば、あなたのコードはもちろん機能します。私は直感的に理解できないので、逆方向のループは使いませんでしたが、それは私の場合だけです。
注:このバッファが文字列用である場合、型は
char
ではなく
uint8_t
.
関連
-
[解決済み】サイズ8の無効な読み取り - Valgrind + C
-
[解決済み】エラー:呼び出されたオブジェクトは、関数または関数ポインタではない
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C言語で「関数の型が競合しています」と表示される、なぜ?
-
[解決済み】ISO C90では、C言語での宣言とコードの混在が禁止されています。
-
[解決済み】 strcpyとstrdupの比較
-
[解決済み】C言語で浮動小数点例外(コアダンプ)発生
-
[解決済み] [Solved] なぜこのようなエラーが発生するのでしょうか。「データ定義に型またはストレージクラスがない」?
-
[解決済み] struct has no member named
-
[解決済み】MB/sとMiB/sを計算する方法は?
-
[解決済み】int型配列へのポインタのスカラ・イニシャライザの過剰要素
-
[解決済み】makefile:4。*** missing separator. 停止する
-
[解決済み】シンプルなC言語のscanfが機能しない?重複