
文字列の先頭にNULLを付けたい時文字列の次の文字が半角の数字だった場合"\01234"とすると先頭がNULLになりませんでした。
"\0001234"としたときちゃんとNULLになり、その場合"\000こんにちわ"でも先頭はNULLでした。"\0こんにちわ"もNULLでした。\000というのは正しい使い方なのでしょうか?
#include <stdio.h>
int main() {
char str[] = "\0009\n";
printf("%s", str+1);
return 0;
}
ついでに質問です。"こんにちわ\n"や"おはよう\n"などの文字列の先頭にNULLを付けて初めから文字列リテラルを作りたい場合にマクロで"\000こんにちわ\n"などと置き換えたい場合、できればM("こんにちわ\n")という形で作る事は可能でしょうか?
M(こんにちわ\n)を"\000こんにちわ\n"に置き換えるマクロは作れました。
#define M(str) M1(\000##str)
#define M1(str) #str
こんな感じなのですがもっとうまい方法はありますか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
NULLのエスケープ文字は\0ですが
\xxx等の3ケタの数字は8進数表記の文字コードとみなされます。
\000は8進数表記で文字コード0(NULL)を表記していると解釈されます。
"\01234" → '\012' , '3' , '4'
"\0001234" → '\000' , '1' , '2' , '3' , '4'
と解釈されます。
つか、NULLは文字列のターミネータに使うのが普通で文字列の先頭につけるものではありませんし、言語がそういう使い方を想定して設計されていません。
文字列の先頭にNULLを必要とするプログラムの考え方自体に無理があるような気がします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# C# 浮動小数の数値文字列化 1 2022/04/18 15:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語
-
VisualStudio2022でC言語プログ...
-
逆コンパイルと逆アセンブルの...
-
サブルーチンを使った再帰的な...
-
gccを行ってもexeファイルが生...
-
Python、プログラミングについ...
-
C言語 列挙型(enum型)変数について
-
c言語でイベントフラグを使った...
-
Windows Formアプリからコンソ...
-
大量のデータを読み込んで表示...
-
パソコン
-
c#のTLS1.2での通信について
-
VisualStudioでC++クラスを追加...
-
C言語でファクト関数を使わずに...
-
visual studio 2022でのC#プロ...
-
C#でTreeViewのCheckBoxのサイ...
-
プログラムの実行時に'<'でリダ...
-
MACで動く実行ファイルをWindow...
-
C++でデスクトップGUIアプリ開...
-
写真のプログラムは、1からnま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
visual studio 2022でのC#プロ...
-
Windows Formアプリからコンソ...
-
大量のデータを読み込んで表示...
-
C言語の関数のextern宣言
-
C#でログファイルにファイルパ...
-
【C言語】全角文字の配列を、全...
-
略語の読み方について
-
プログラマー達は何故、プログ...
-
C#でTreeViewのCheckBoxのサイ...
-
gccを行ってもexeファイルが生...
-
c言語でイベントフラグを使った...
-
VisualStudio2022でC言語プログ...
-
Python、プログラミングについ...
-
C言語 列挙型(enum型)変数について
-
VisualStudioでC++クラスを追加...
-
int16_t の _t は何?
-
Notepad++の関数リスト表示の変...
-
コンソールアプリを作成するの...
-
逆コンパイルと逆アセンブルの...
-
MACで動く実行ファイルをWindow...
おすすめ情報