ページへ戻る

− Links

 印刷 

hideyosi​/osalink1でお勉強2 のバックアップ差分(No.4) :: OSASK計画

osaskwiki:hideyosi/osalink1でお勉強2 のバックアップ差分(No.4)

« Prev[4]  Next »[5]
3: 2010-02-02 (火) 17:16:00 lina[6] ソース[7] 4: 2010-02-02 (火) 18:53:38 lina[6] ソース[8]
Line 80: Line 80:
g01のapiでは、''一行読み込み''はない。すでにbuffer1内に全部入っちゃってる。つーことは・・・・~ g01のapiでは、''一行読み込み''はない。すでにbuffer1内に全部入っちゃってる。つーことは・・・・~
改行コードを元に、自分で配列とかを作って割ってやらないといけない・・・のかな。例えば・・・ 改行コードを元に、自分で配列とかを作って割ってやらないといけない・・・のかな。例えば・・・
 +
 +  //まずは改行コードを一旦統一する
 +  for ( i = 0; i < strlen(buffer1); i++){
 +    //とりあえずLFに統一するか・・・
 +    if (buffer1[i] == 0x0D) buffer1[i] = 0x0A;
 +    //これで、CRが全部LFに置換されるはず。
 +  }
 +
 +  //先頭にある邪魔なLFなどを排除するため、開始地点を探っておく
 +  int stppoint; stppoint = 0;
 +  for ( i =0; i < strlen(buffer1); i++){
 +    if ( buffer1[i] != 0x0A ){
 +      stppoint = i;
 +      break;
 +    }
 +  }
 +  //これでもし先頭にLFがあっても全て飛ばした位置から開始できる
 +
 +  //新しい配列変数を確保する。
 +  int ii2; ii2 = 0;
 +  int lfs; lfs = 0;
 +  unsigned char files[strlen(buffer1)+1];
 +  for ( i = stppoint; i < strlen(buffer1); i++){
 +    if ( buffer1[i] == 0x0A && buffer1[i-1] == 0x0A ){
 +      //  連続したLFだったらシカトして進める。
 +    }
 +    else {
 +      if ( buffer1[i] == 0x0A ){
 +        files[ii2] = 0;
 +        lfs++;
 +      }
 +      else {
 +        files[ii2] = buffer1[i];
 +      }
 +      ii2++;
 +      //  LFを終端コードに置換
 +    }
 +  }
 +  //最後に終端コードを打っておく
 +  files[ii2+1] = 0;
 +
 +  //これで、0によって区切られた配列になったはず。
 +  //files配列内の、0の位置を記憶する配列を用意する。
 +  //厳密には0の前。行頭というべきか・・・
 +  int zeropoint[lfs + 1];
 +  //↑の処理で先頭は必ず行頭になってるはずなので・・・
 +  zeropoint[0]=0;
 +  int i3; i3 = 1;
 +  for (i = 1; i < ii2 +1; i++){
 +      if (files[i] != 0 && files[i-1] == 0){
 +        //ここが行頭になるはず。位置を記憶
 +        zeropoint[i3] = i;
 +        i3++;
 +      }
 +  }
 +
 +  //これで、有効な行数はi3個。lfpointが行の先頭になっているはず。
 +
 +  for ( i = 0; i < i3; i++){
 +  g01_putstr0(files + zeropoint[i] ); g01_putstr0("\n");
 +  }
 +
 +
 +これでどおぉぉぉだあぁぁぁ!! コンツクショー!!! (レベル低いですかそうですか・・・orz)
« Prev[4]  Next »[5]