**
C言語の文字列の入力と出力の研究ノート
ゼロ、ストレージ・スペースを作成
**まず、C言語の文字列が店に、文字の配列の形であり、配列(傑作の配列、多くの場合、単独で主導アドレス)を使用するプロセスの動作に表示されていない
ソリッドステート・ストレージ・スペースを作成するには:
char zifu[MAX]; //创建完成
)ダイナミック・ストレージ・スペースを作成:(お勧めしません
char *zifu;
scanf("%s", zifu);
短所:zifuメモリ空間がランダム見つけるための場所です、ここでは文字列の割り当ては、データとコードをカバーする、ともプログラムの異常終了につながります。
あなたが操作を変更していない場合でも、これは動的配列を作成することができます。
まず、入力します。
1.scanf():のタイプのための単語を入力します。
入力文字列のためのスペース:スキップスペースの前に、文字列、空白文字列(改行、スペース、タブ)が自動的に(最後の「/ 0」の文字列で)[空白文字を読んでいない]終了します
読み取り形式について:scanf("%s/%10s",zifu);
PS:指定したフィールド幅の%10sが、読書は、10個の文字を示します。また、何の代入記号はありません!
scanf()関数:返り値のscanf()は(... 0/1/2)変数の数が正常に割り当てられている場合、またはエラーが発生したり、ファイルの末尾を満たされた場合、戻り値はEOFです。
セパレータの質問は:(すべての空白文字を含む)なしデフォルトの区切り文字***ソリューション:: - にfflush(STDIN)と呼ばれる機能があるの***(1)バッファを空にする主に「%のC」を目指していますバッファをクリアするために使用することができます。
while(scanf("%c%c",&a,&b)!=EOF)
{
printf("a=%c,b=%c\n",a,b);
fflush(stdin);
printf("Input the value of a and b:");
}
すなわち:白文字の前に空の一時バッファを誤読しています。
(2)データバッファ読み出しにより誘導される誤差(間接的な洗浄バッファ) - GETCHAR()または取得()
GETCHARため():最初の文字バッファ(EOF)を読んで、関数は、文字の値を返す(EOF == - 1)(整数変数は、その対応するASCIIコードに戻されている場合)パラメーターCH / INT(ASCIIコード)がCHARの値に対応するには、この関数の出力端子を - のputchar(CH / INT):ブラザーは、関数のputchar()拡張しました
2.gets)({文字列を取得}:物事の行を読んで
最初の改行は(\ n)は、入力端面を決定改行で、ヌル文字(\ 0)を交換します。
()欠陥を取得します。配列は、入力ラインを手放すかどうかをチェックしません。だから、多くの場合、エラー警告があるだろう
取得します(名)::配列に割り当てられた読み取りライン文字列名の機能を使用しています。文字列の最初の関数の戻りアドレス。(STR =取得(名前) - STR もポイント名の文字列配列)
char name[MAX];
char *ptr; //指向char的指针
printf("Please input your name.\n");
ptr = gets(name); //使用一个地址吧字符串赋值给name
//gets()函数使用return关键字返回字符串的地址
printf("name, %s\n", name);
printf("ptr, %s\n", ptr);
読み込み繰り返し行の文字列を終了するにはどのように文字列を取得します読んで、それが空の(または0)のアドレスを返すとき()関数は、ファイル(EOF)のエラーまたは終了が発生した場合、アドレスが空きスペースと呼ばれました:ポインタ、および表さstdio.hの一定のNULLの内部に定義され、次のコードは、いくつかのエラーを検出するために使用することができます。
しばらく(取得(名前)!= NULL)
3.fgets():二つの方法で文字列の末尾を読み取る:文字数を上限改行までOR
標準入力モード(キーボード)を読み取ることだけでなく、前の二つの特性より一つ以上
最後の改行を読み込み
関数fgets(名前、MAX、STDIN);
PS:文字列の最後に加えてヌル文字で読むと関数fgets()は取得します()のようになる
説明書を読むために3番目のパラメータどのファイル!キーボードからデータを読み出す際に引数として(標準入力の代わりに)標準入力を使用することができ、識別子は、stdio.hで定義されています。
第二に、出力
1.printf():出力文字列
printf("%s",name);
2.puts {置く列}():最初のアドレス必要文字列パラメータ(すなわち、配列名)
文字列/ 0出力の終了が終了し、自動的に改行を追加しているに達しました。
3.fputs():ファイルのバージョンの顔
fputs(line,stdout);
そしてプット()関数が異なっている、fputs()関数出力は自動的に改行を追加しません。。
PS:プット()およびfputs( )はそれぞれ(取得)・関数fgets()に対応します{自動的に追加改行が逆転し}