「C言語」の編集履歴(バックアップ)一覧はこちら
「C言語」(2013/08/19 (月) 23:08:18) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
-プロセス
--メモリ解放
---プロセスがメモリを解放するのはプロセスが終了する時。プロセスはプログラムを実行するが、プロセスの終了と同時にプログラムが必ずしも終了しない。
-ライブラリ
--静的ライブラリ(libxxx.a): それぞれのプログラムが、ライブラリを個々に読み込む。実行ファイルにライブラリが組み込まれる。ライブラリを更新すると、実行ファイル自体をコンパイルしなおす必要がある。
--共有ライブラリ(libxxx.so): 複数のプログラム間でライブラリを共有する。ディスクとメモリの節約。
---動的ライブラリ: 実行するときに読み込まれる。ライブラリを更新した時は、動的ライブラリだけを更新すれば、OK。コンパイルしなおす必要がない。
-インクルード
-- -I: カスタム・インクルード・ファイルの場所を指定
-- -L: プログラミング・ライブラリの場所を指定
-プロセス
--メモリ解放
---プロセスがメモリを解放するのはプロセスが終了する時。プロセスはプログラムを実行するが、プロセスの終了と同時にプログラムが必ずしも終了しない。
-ライブラリ
--静的ライブラリ(libxxx.a): それぞれのプログラムが、ライブラリを個々に読み込む。実行ファイルにライブラリが組み込まれる。ライブラリを更新すると、実行ファイル自体をコンパイルしなおす必要がある。
--共有ライブラリ(libxxx.so): 複数のプログラム間でライブラリを共有する。ディスクとメモリの節約。
---動的ライブラリ: 実行するときに読み込まれる。ライブラリを更新した時は、動的ライブラリだけを更新すれば、OK。コンパイルしなおす必要がない。
-インクルード
-- -I: カスタム・インクルード・ファイルの場所を指定
-- -L: プログラミング・ライブラリの場所を指定
#include <stdio.h>
#include <string.h>
int main() {
FILE* f = fopen("result.txt", "r");
FILE* g = fopen("summary.txt", "w");
char line[500];
char cp_line[500];
char *pos;
int index, fpos, epos, i, num;
while (fgets(line, 256, f) != NULL) {
// コメント部分を除去
strncpy(cp_line,line,strlen(line)+1);
cp_line[strlen(cp_line)-1] = '\0';
printf("%s",cp_line);
fprintf(g, "%s", cp_line);
index = 0;
if((pos=strstr(cp_line,"/*"))!=NULL){
fpos = strlen(cp_line) - strlen(pos); // /*の位置
if((pos=strstr(cp_line,"*/"))!=NULL){ // /* .... */ を削除
epos = strlen(cp_line) - strlen(pos); // */の位置
num = strlen(cp_line) - strlen(pos) - 2;
for(i=0;i<num;i++)
cp_line[fpos+i] = cp_line[epos+2+i];
cp_line[fpos] = '\0';
}else{ // /* ... を削除
cp_line[fpos] = '\0';
}
}
if((pos=strstr(cp_line,"//"))!=NULL){
fpos = strlen(cp_line) - strlen(pos); // /*の位置
cp_line[fpos] = '\0';
}
// コメント部分を削除した後でも、プリプロセッサ命令が
// 残って入ればNO、残っていなければOK
if( strstr(cp_line,"defined")==NULL && strstr(cp_line,"ifdef")==NULL && strstr(cp_line,"ifndef")==NULL && strstr(cp_line,"elif")==NULL ){
printf("\tNO\n");
}else{
printf("\tNO\n");
}
//fprintf(g, "%s", line);
}
fclose(f);
fclose(g);
return 0;
}