文字列操作(終端と抽出)について
こんばんは お時間等ございましたら、ご指摘よろしくお願いします。
<背景>メインプログラムからサブプログラムに複数の数値を渡して、
文字列として編集します。
そして、その文字列から特定の文字のみを抽出し、
ファイルに出力したいと考えています。
※下記にソースイメージを記しました。
ただ、While文の指定がうまくなく、
想定どおり処理を抜けれません。
<質問>サブプログラムでファイルに出力する文字のうち、
抽出する文字と抽出しない文字はランダムで、
メインプログラムから、渡されてきます。
※文字列の文字数は、
メインから渡され編集した文字数>=ファイルに出力する文字数。
サブプログラムの先頭で出力する文字列の大きさを
指定しているのですが、抽出しない文字があった場合、
抽出しない文字数分ゴミが出力されてしまうのを
防ぎたいと考えています。
<イメージ>
#include <stdio.h>
void sub( int a, int b, int c, FILE *fp );
int main(){
FILE *fp;
fp = fopen("c:\\0511.txt","w");
int a;int b;int c;
a = 1; b = 0; c = 1;
sub( a, b, c, fp );
fclose(fp);
}
void sub( int a, int b, int c, FILE *fp ){
int j = 0;
char moji[4];char moji2[4];
sprintf(moji,"%d%d%d%s",a,b,c,"\0" );
while( moji[moji[*moji]] != '\0' ){
switch( moji[moji[*moji]] ){
case '1' : moji2[j] = moji[moji[*moji]]; break;
case '0' : j -= 1; break;
default :;break;
}
moji[*moji] += 1;j += 1;
}
fprintf(fp,"%s\n",moji2 );
}//
Run-Time Check Failure #2 - Stack around the variable 'moji' was corrupted.
もし宜しければ、ご指摘の程よろしくお願いします。
お礼
回答ありがとうございます。 解決しました。 ありがとうございました。