GNU/Linux >> Linux の 問題 >  >> Linux

Linux Cプログラミングチュートリアルパート9:文字列

この進行中のCプログラミングチュートリアルシリーズでは、文字配列の概念についてすでに触れました。文字配列と密接に関連しているのは文字列の概念です。これについてはここで説明します。

文字列は、1つの主要な領域で文字配列とは異なり、ヌル文字'\0'で終了します。文字配列にはそのような終了文字はありません。次のコードは、文字列を定義できるいくつかの方法を示しています。

 #include  

int main()
{
char str [] ="string";
char str1 [] ={ 's'、't'、'r'、'i'、'n'、'g'、'\ 0'};
char str2 [10] ="string";
char str3 [10] ={'s'、't'、'r'、'i'、'n'、'g'、'\ 0'};
char * str4 ="string";

printf( "\ n str =%s、str1 =%s、str2 =%s、str3 =%s、およびstr4 =%s"、str、str1、str2、str3、str4);

0を返す;
}

したがって、二重引用符で囲まれた文字の束は文字列であり(Null文字の終了は暗黙的に含まれます)、\0文字で明示的に終了する一連の文字も文字列です。

このプログラムの出力は次のとおりです。

 str =string、str1 =string、str2 =string、str3 =string、およびstr4 =string 

配列の終わりを示す終了ヌル文字がないため、この方法で非文字列文字配列を印刷することはできないことに注意してください。これを実行しようとするコードは次のとおりです。

 #include  

int main()
{
char str [] ={'e'、'n'、'd'};
char c ='t';

printf( "\ n str =%s"、str);

return 0;
}

ただし、代わりに最後にガベージ値を出力することになります:

 str =end ?? 

次に進むと、「Printf」の%sフォーマット指定子がコンパイラに入力変数を文字列として扱うように指示するのと同じように、「scanf」関数で%sを使用して、ユーザーからの入力として文字列を受け入れることもできます。次に例を示します:

 #include  

int main()
{
char str [30];

printf( "\ n 30文字未満の長さの文字列を入力してください: ");
scanf("%s "、str);

printf(" \ n str =%s "、str);

return 0;
}

二重引用符で囲まれた0個以上の文字のシーケンスは、文字列定数または文字列リテラルと呼ばれることに注意してください。これは、「howtoforge」と「」の両方が文字列定数または文字列リテラルであることを意味します。

文字列の長さは、標準のstrlen()関数を使用して見つけることができます。次に例を示します:

 #include  

int main()
{
char str [] ="howtoforge";

printf( "\n文字列'howtoforge'の長さは次のとおりです:%d"、strlen(str));

return 0;
}

このプログラムによって生成される出力は10です。これは、「howtoforge」の文字数、つまりその長さです。

次に、一重引用符で囲まれた文字(「d」など)と二重引用符で囲まれた文字(「d」など)は互いに異なることに注意してください。最初の文字は文字定数(マシンの文字セット内の文字の数値を生成するために使用できます)ですが、2番目の文字は文字列です(終了する\ 0文字が含まれていることを意味します)。

最後に、文字列を関数への引数として渡す方法を簡単に見てみましょう。

 #include  

void change_value(char s [])
{
s [0] ='H';
s [ 5] ='F';

printf( "%s"、s);

}

int main()
{
char str [] ="howtoforge";

change_value(str);

return 0;
}

したがって、上記のプログラムでは、配列のベースアドレスを参照しているため、引数として渡されるのは配列'str'の名前です。関数'change_value'の宣言は、入力として配列を期待するようなものです。このプログラムの出力は次のとおりです。

 HowtoForge> pre 

そのため、このチュートリアルでは、文字列の定義方法や使用方法など、文字列の基本について説明しました。今後のチュートリアルで文字列について詳しく学習しますが、この記事で十分に始めることができます。文字列に関する質問や疑問がある場合は、以下のコメントでお知らせください。


Linux
  1. Kali LinuxBurpSuiteチュートリアル

  2. LinuxCプログラミングチュートリアルパート12-代入演算子と条件式

  3. Linux Cプログラミングチュートリアルパート11-算術演算子、リレーショナル演算子、および論理演算子

  1. Cプログラミングチュートリアルパート3-変数の基本

  2. LinuxCプログラミングチュートリアルパート15-2秒の補数と負の数

  3. Linux Cプログラミングチュートリアルパート18:再帰関数

  1. Cプログラミングチュートリアルパート5-文字変数

  2. LinuxCプログラミングチュートリアルパート10-可変スコープ

  3. LinuxCプログラミングチュートリアルパート8-値による呼び出しとポインタ/アドレスによる呼び出し