c言語のソースの最後のループのところなんですが、
strcpy ( ( cBuff + strlen( cBuff ) - ( iCutcnt + 1 ) ), "\n" );
というところでどういう処理をしているのかわかりません。
Fp[0]は読みだし専用でファイルを開いたファイルポインタで
Fp[1]は書き込み専用でファイルを開いたファイルポインタです。
iCutcntはコマンドライン引数で指定した任意の数字を数値化したものです。
while( 1 ) {
if( !fgets( cBuff, sizeof( cBuff ), Fp[0] ) )
break;
if( strlen ( cBuff ) < iCutcnt ) {
iReturnValue = 1;
break;
}
strcpy ( ( cBuff + strlen( cBuff ) - ( iCutcnt + 1 ) ), "\n" );
fprintf( Fp[1], "%s", cBuff );
}
for( iLoopCnt = 0; iLoopCnt < 2; iLoopCnt++)
fclose( Fp[ iLoopcnt ] );
return iReturnValue;
}
No.3
- 回答日時:
C言語では、文字列は「文字の配列」として表現しており、
文字配列のうち'\0'がくるまでを「文字列」として認識します。
それをふまえたうえで、strcpy がどういう結果を生み出すのか考えてみてください。
以下の3つのコードはどれも同じ意味です。
・その1
cBuff[strlen( cBuff ) - ( iCutcnt + 1 )] = '\n';
cBuff[strlen( cBuff ) - ( iCutcnt + 1 ) + 1] = '\0';
・その2
strcpy ( &cBuff[strlen( cBuff ) - ( iCutcnt + 1 )], "\n" );
・その3
strcpy ( ( cBuff + strlen( cBuff ) - ( iCutcnt + 1 ) ), "\n" );
No.1
- 回答日時:
???
> ( cBuff + strlen( cBuff ) - ( iCutcnt + 1 ) )
これがわからないのかな?
それぞれが一体何の演算をしているのかを把握したら判るんじゃない?
それとも「strcpy」や「strlen」が判らないのかな?それならその文字列でweb検索でもしたらすぐ出てくるんじゃない?
答えを直接書かないのはそういうサイトの約束なのでヒントだけ。。。
この回答への補足
わからないのは
strcpy ( ( cBuff + strlen( cBuff ) - ( iCutcnt + 1 ) ), "\n" );
fprintf( Fp[1], "%s", cBuff );
の2行ですね。
ファイルの中身をcBuffに格納したものにその長さを足してある数値を引く。
それに\nをコピーする。
そしてFp[1]にcBuffを書き込む。
結局のところがよくわからりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
nullと""、\\0とEOFの違いにつ...
-
16進数を2文字ずつ配列に格納し...
-
C#でstringをポインタとして渡す
-
[C++]WCHARの1文字目しか表示で...
-
c#で他のアプリの文字入力フォ...
-
引用符と二重引用符
-
プログラムによく出てくるst...
-
WSH(VBS)でJSONの文字列を読み...
-
C++で入力した文字列から数字を...
-
[C#.net]正規表現による指定文...
-
Excelシートを固定長のテキスト...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
%dなどの違い
-
Shift_JIS(16進)を文字に変換す...
-
セグメントエラー
-
関数から配列を返すには?
-
VBAのプログラムで、DIAG = 1# ...
-
Integer変数をカラにしたいので...
-
init関数の意味
-
C言語にて構造体のメンバがNULL...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C++で入力した文字列から数字を...
-
nullと""、\\0とEOFの違いにつ...
-
プログラムによく出てくるst...
-
%dなどの違い
-
WSH(VBS)でJSONの文字列を読み...
-
TCL言語で文字列検索方法を教え...
-
C#でstringをポインタとして渡す
-
16進数を2文字ずつ配列に格納し...
-
_tcscpy_s(wcscpy_s)の第二引数...
-
C++で文字列の右端から特定の文...
-
シリアル通信で0x00を送信した...
-
VBA-DLLの引数受け渡しについて
-
数字の入った配列をファイルへ...
-
c#で他のアプリの文字入力フォ...
-
構造体→文字列→構造体 をする方法
-
Shift_JIS(16進)を文字に変換す...
-
バイナリファイル中の日本語文...
-
C言語の課題で困っています;
-
[C++]WCHARの1文字目しか表示で...
-
VB6.0でのバイナリデータの扱い...
おすすめ情報