情報処理演習C2 ファイル操作について (2) ファイル操作 (1) temp.txt FILE* fp = fopen("temp.txt","r"); int value0; fscanf(fp,"%d\n",&value0); int values[4]; fscanf(fp,"%d, %d, %d, %d\n",&values[0],& values[1],&values[2],&values[3]); char buf0[1024]; fgets(buf0,sizeof(buf0),fp); char buf1[1024]; fgets(buf1,sizeof(buf1),fp); fclose(fp); 1 2, 3, 4, 5 L3 L4 value0 values[4] 1? 2? 3? 4? 5? buf0[1024] ?L ? 3? \n ? \0 ? ? ? ・・・ 4? \n ? \0 ? ? ? ・・・ buf1[1024] ?L ? ファイル操作 (2) temp.txt FILE* fp = fopen("temp.txt","r"); 1 2, 3, 4, 5 L3 L4 char buf[1024]; while(NULL!=fgets(buf,sizeof(buf),fp)){ printf("buf=%s",buf); } fclose(fp); buf[1024] 1?L 2 \n ?, \0 3? 4 \n ?, \0 4? ?, 5? ・・・ ファイルの操作 (3) • 一度ファイルの最後まで読み込んだ後で、も う一度ファイルを最初から読み直すには? – fcloseしてから、もう一度fopenする。 – ファイルから読み込んだ情報を、配列に保存して おく。 関数の基本 • 変数に値を入れるもの – int ret = function(1,2); • 自分で関数を作る場合と、予め用意された関 数を使う場合がある。 文字列処理関数: strncmp • 指定した数の文字を比較する。 • int ret = strncmp("abc","abc",3); – retに0が代入される。 • int ret = strncmp("abc","abcd",3); – retに0が代入される。 • int ret = strncmp("abc","abcd",4); – retに-1が代入される。 • int ret = strncmp("abd","abc",3); – retに1が代入される。 文字列処理関数: strstr • 文字列の中から、指定された文字列を捜す。 • char* ptr = strstr("abc","a"); – ptrに"a"の部分を指すポインタが代入される。 • char* ptr = strstr("abc","bc"); – ptrに"bc"の"b"の部分を指すポインタが代入される. • char* ptr = strstr("abc","d"); – ptrにNULLが代入される。 文字列処理: sscanf • 主に文字列を数値に変換する。 • int ivalue1,ivalue2; • int ret = sscanf("5","%d",&ivalue1); – retに1が代入される。ivalue1に5が代入される。 • int ret = sscanf("5,6","%d,%d",&ivalue1,&ivalue2); – retに2が代入される。ivalue1、ivalue2に5,6が代入される。 • int ret = sscanf("abc","%d",&ivalue1); – retに0が代入される。ivalue1には何も入らない。 文字列処理の例 • char* ptr = strstr("str,1,name",","); – ptrに"str"の後ろの,のポインタが入る。 – ptrは、",1,name" という文字列ともいえる。 – ptr+1は、"1,name"という文字列になる。 • int ivalue; • int ret = sscanf(ptr+1,"%d",&ivalue); – ivalueに1が入る。
© Copyright 2024 ExpyDoc