ファイル操作と文字列の利用.

Slides:



Advertisements
Similar presentations
10: ファイル入出力 Linux にログインし、以下の講義ページ を開いておくこと teachers/w483692/CPR1/ C プログラミング入門 総機 1 ( 月 1) 1.
Advertisements

プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
情報処理演習C2 ファイル操作について (2).
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
データ構造とアルゴリズム 第10回 mallocとfree
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
第13回 プログラミングⅡ 第13回
12: コマンドライン引数 C プログラミング入門 総機1 (月1) Linux にログインし、以下の講義ページ を開いておくこと
記憶クラス 変数をどのような記憶領域に割り当てるかを指定するのが記憶クラス 記憶クラスには、自動変数、静的変数、外部変数などがある。
12: コマンドライン引数 C プログラミング入門 基幹7 (水5) Linux にログインし、以下の講義ページ を開いておくこと
第8回 プログラミングⅡ 第8回
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
理由:文字数より要素数の多い配列を用いた時に,文字列の最後を示すため
構造体.
情報処理Ⅱ 第13回 2006年1月20日(金).
アルゴリズムとデータ構造 補足資料6-3 「サンプルプログラムcat3.c」
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
第3回 配列,構造体,ポインタ ~ データ構造について学ぶための基礎~
情報処理Ⅱ 第13回 2004年01月25日(火).
10: ファイル入出力 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
プログラミング論 ファイル入出力
ネットワークプログラミング 第4回「C言語の基礎~ポインタと配列」
データ構造とアルゴリズム 第4回 リスト ~ データ構造(1)~.
プログラミング応用 printfと変数.
精密工学科プログラミング基礎 第10回資料 (12/18実施)
プログラミング 4 記憶の割り付け.
リダイレクト パイプ 標準入出力プログラム コマンド行引数 関数 system()
プログラミング演習I 2003年6月25日(第10回) 木村巌.
画像処理プログラムの説明.
2005年度 データ構造とアルゴリズム 第3回 「C言語の復習:再帰的データ構造」
第10章 これはかなり大変な事項!! ~ポインタ~
プログラミング入門2 第11回 情報工学科 篠埜 功.
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
第13章 文字の取り扱い方 13.1 文字と文字型関数 13.2 文字列 13.3 文字型配列への文字列の代入
第7回 プログラミングⅡ 第7回
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
プログラミング論 ファイル入出力
第11回 プログラミングⅡ 第11回
P n ポインタの基礎 5 q m 5 7 int* p; int 型の変数を指すポインタ int* q; int 型の変数を指すポインタ int n=5, m=7; int 型の変数 int array[3]; int* pArray[3]; p = &n; ポインタにアドレスを代入しているのでOK.
09: ポインタ・文字列 C プログラミング入門 総機1 (月1) Linux にログインし、以下の講義ページ を開いておくこと
プログラミング基礎B 文字列の扱い.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第5回資料 今回の授業で習得してほしいこと: 構造体 (教科書 91 ページ)
構造体と共用体.
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
プログラミング演習I 2003年4月30日(第3回) 木村巌.
文字列へのポインタの配列 static char *lines[MAXLINES]; lines[0] NULL
プログラミング演習I 2003年7月2日(第11回) 木村巌.
ポインタとポインタを用いた関数定義.
第13章 文字の取り扱い方 13.1 文字と文字型変数 13.2 文字列 13.3 文字型配列への文字列の代入
09: ポインタ・文字列 C プログラミング入門 基幹7 (水5) Linux にログインし、以下の講義ページを開いておく こと
12: コマンドライン引数 C プログラミング入門 基幹7 (水5) Linux にログインし、以下の講義ページを開いておく こと
プログラミング 4 文字列.
演算子のオーバーロード.
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
プログラミング演習II 2004年11月 16日(第5回) 理学部数学科・木村巌.
15.1 文字列処理の基本 15.2 文字列処理用ライブラリ関数
プログラミング演習II 2003年12月10日(第7回) 木村巌.
左右反転と180度回転 [0][xsize – 1] [0][0] → i ↓ j [ysize – 1][xsize – 1]
12: コマンドライン引数 C プログラミング入門 基幹2 (月4) Linux にログインし、以下の講義ページ を開いておくこと
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

ファイル操作と文字列の利用

前回の復習 構造体・共用体の定義 間接メンバ変数参照演算子 (ドット演算子・->演算字)

ファイルの入出力 計算結果や編集した文章をファイルとして保存! FILE型のポインタ(ファイルポインタ) p Disc 注意:関数fopenはファイルが正常に できなかったときはNULLを値として返す

#include <stdio.h>の秘密 stdio.hの中に File *stdin, *stdout, *stderr などとして標準の入出力用のファイルポインタが大域変数として定義されている!

JISコード表(文字型定数)

文字列 文字列のデータ構造 文字列=文字コードの列+’\0’ “Hello” 空文字(ヌルコード) 文字列=文字コードの列+’\0’ ‘H’ ‘e’ ‘l’ ‘o’ ‘\0’ “Hello” 文字列定数はchar型の配列と同じもの → 文字型ポインタとしても表現可能

文字列の配列・ポインタ表現 s: ‘H’ s[0] ‘e’ s[1] ‘l’ . ‘0’ s[4] ‘\0’ s[5] ‘H’ 0010H ‘o’ ‘\0’ 0100H 1 0101H 0102H ps:

よくある間違い ポインタ変数は初期化するか 値を代入する!

ちょっと高級なメモリ領域獲得法 malloc(), free()の利用

複数の文字列の同時定義 st[0][0] ‘A’ st[0] st[0][1] ‘n’ st[0][2] st[0][3] ‘\0’ ? st[1][0] ‘G’ st[1] st[1][1] ‘o’ st[1][2] ‘r’ st[1][3] st[1][4] ‘A’ 0010H ‘n’ 0011H 0012H ‘\0’ 0013H ‘G’ 0014H ‘o’ 0015H ‘r’ 0016H 0017H 0018H 0100H 1 0101H 0102H 4 ps[0]: ps[1]:

文字列領域をキーボード・ディスプレイ(バッファー)として使う sprintf() sscanf()

文字列の操作 良く使う文字列操作関数 関数名と使い方 機能 strcpy(char *s1, char *s2) s1のアドレスにs2が指す文字列をコピーする strcat(char *s2, char *s2) S1の指す文字列の後にs2の指す文字列をコピーする(文字列が結合される)

strcpy・strcatの動き ‘H’ 0010H ‘e’ 0011H ‘l’ 0012H 0013H ‘o’ 0014H ‘\0’ 0101H 0102H 6 0103H 0104H 0105H ‘H’ 0010H ‘e’ 0011H ‘l’ 0012H 0013H ‘o’ 0014H ‘\0’ 0015H ‘w’ 0016H 0017H ‘r’ 0018H 0019H ‘d’ 001AH 001BH buffer[0]: ‘H’ ‘e’ ‘l’ ‘o’ ‘\0’ ‘H’ ‘e’ ‘l’ ‘o’ ‘W’ ‘r’ ‘d’ ‘\0’ 0110H 0111H 0112H 0113H 0114H 0115H 0116H 0117H 0118H 0119H 011AH 011BH word[0]: word[1]:

その他の文字操作関数(1) http://www.cppreference.com/wiki/c/string/start

その他の文字操作関数(2)

大規模プログラムの管理 make + Makefile タブ # Contents of Makefile hello: hello.o func1.o cc -o hello hello.o func1.o hello.o: hello.c cc –c hello.c func1.o: func1.c cc –c func1.c タブ hello.c func1.c >make [Enter] (make –f  Makefile [Enter]) hello

プログラムに文字列(パラメータ)を渡す int main(void) ↓ Int main(int argc, char *argc[]) int i; for(i=0;i<argc;i++) printf(“%s\n”, argc[i]); }