トップページ > 過去ログ > 記事閲覧
簡単な字句解析をしたいのですが
名前:TKOZ 日時: 2008/11/30 20:19

こんばんは、TKOZです。 今回は、Cプログラムの質問をしに来ました。 どんなプログラムを作ろうとしているかというと、 簡単な文字列を:(コロン)で区切って、文字列を 取り出す関数を作ろうとしているのです。 どこがおかしいのでしょうか? アドバイスをお願いします。 まあ、ソースプログラムを見れば、何をやろうと しているかは、分かると思います。 開発環境は WindowsXP CPU1Ghz メモリ256MB HDD60GB BCCDeveloper+BorlandC++Compiler5.5 です。 #include<stdio.h> #include<string.h> #include<stdlib.h> char *strcut(char a,char str[],int num) { //文字列strの中の文字aまでのnum番目の文字列を取り出す関数 static char str2[100]; int Number=0; int i,j; for(j=0;j<=num;j++) { for(i=Number;str[i]!=a;i++) { str2[i]=str[i]; } Number=i+1; str2[Number]='\0'; } return str2; } int main(void) { printf("%s\n",strcut(':',"Takanori:Ozawa:",0)); //Takanoriと表示したい printf("%s\n",strcut(':',"Takanori:Ozawa:",1)); //Ozawaと表示したい return 0; }

Page: 1 |

Re: 簡単な字句解析をしたいのですが ( No.1 )
名前:wakahage 日時:2008/11/30 20:58

まず str2[i]=str[i]; は str2[i-Number]=str[i]; ではないでしょうか。 次に Number=i+1; str2[Number]='\0'; は str2[i-Number]='\0'; Number=i+1; でいいと思います。 どうでもいいことですが、 #include<stdlib.h> は //#include<stdlib.h> でもいいかもしれません
Re: 簡単な字句解析をしたいのですが ( No.2 )
名前:ライブラリ使用者 日時:2008/11/30 21:31

補足 i=Numberであるため、 "Takanori'\0'Ozawa" が作成されています。
Re: 簡単な字句解析をしたいのですが ( No.3 )
名前:TKOZ 日時:2008/12/01 17:39

wakahageさん ライブラリ使用者さん ありがとうございます。 おかげさまで、strcut関数を完成させることが 出来ました。

Page: 1 |