テキストファイルから文字を抜き出したいと思っています。
ちなみにテキストファイルの中身ですが
P_C="k123"+"CMOK"
P_M=MAX("MDMC","MKOM")
という感じで式の左辺とセミコロンでくくられた文字を抽出したいのですが
strchr,strtokやstrcpyなど文字列関数を使ってやっているのですが
うまくゆきません。どなたかアドバイスいただけたらと思います。
よろしくお願いします。
while (NULL != fgets(buf, sizeof buf,ft)){
//strcpy(cdmy,strtok(buf,"="));
// puts(cdmy);
//fprintf(fh, "#define %s output[obj[/url].outputs + 2].Analog\n", cdmy);
//for (i = 0; i < MAXFIELD; i++) {
tp = strtok(buf, "\"");
while( tp != NULL){
tp = strtok(NULL,"\"");
if(tp != NULL){
fprintf(fh, "#define %s output[obj[/url].outputs + 2].Analog\n", tp);
}
}
//if (tp != NULL){
// strcpy(cdmy, strtok(p, "\""));
// fprintf(fh, "#define %s output[obj[/url].outputs + 2].Analog\n",cdmy);
// }else{
// break;
// }
// }
//strcpy(cdmy, strtok(p, '"'));
//puts(cdmy);
//tp = strtok(NULL, "=\"");
//sscanf(b, "%7s%*[^\"]\"%[^\"]\"%*[^\"]\"%[^\"]", v);
//fprintf(fh, "#define %s output[obj[/url].outputs + 2].Analog\n", tp);
}
fclose(fh);
fclose(ft);
return 0;
}
テキストファイルより文字を抜き出す
Re:テキストファイルより文字を抜き出す
> 次回より気をつけます。
今回から改善して欲しいのですが...
> P_C="k123"+"CMOK"
> P_M=MAX("MDMC","MKOM")
> という感じで式の左辺とセミコロンでくくられた文字を抽出したいのですが
セミコロンがどこにも存在しません。
この情報だけでは、左辺を抽出することしかできそうにありません。
ちなみに左辺を抽出するだけなら、
今回から改善して欲しいのですが...
> P_C="k123"+"CMOK"
> P_M=MAX("MDMC","MKOM")
> という感じで式の左辺とセミコロンでくくられた文字を抽出したいのですが
セミコロンがどこにも存在しません。
この情報だけでは、左辺を抽出することしかできそうにありません。
ちなみに左辺を抽出するだけなら、
char lhs[100+1] fscanf(stream, "%100[^=]%*[^\n]%*c", lhs);で十分な気がします。
pre使いました
#include <stdio.h> void main() { while (NULL != fgets(buf, sizeof buf,ft)){ strcpy(cdmy,strtok(buf,"=")); puts(cdmy); fprintf(fh, "#define %s output[obj[/url].outputs + 2].Analog\n", cdmy); for (i = 0; i < MAXFIELD; i++) { tp = strtok(buf, "\""); while( tp != NULL){ tp = strtok(NULL,"\""); if(tp != NULL){ fprintf(fh, "#define %s output[obj[/url].outputs + 2].Analog\n", tp); } } if (tp != NULL){ strcpy(cdmy, strtok(p, "\"")); fprintf(fh, "#define %s output[obj[/url].outputs + 2].Analog\n",cdmy); }else{ break; } } strcpy(cdmy, strtok(p, '"')); puts(cdmy); tp = strtok(NULL, "=\""); sscanf(b, "%7s%*[^\"]\"%[^\"]\"%*[^\"]\"%[^\"]", v); fprintf(fh, "#define %s output[obj[/url].outputs + 2].Analog\n", tp); } fclose(fh); fclose(ft); return 0; }
Re:pre使いました
> セミコロンではなくダブルクオテーションでした。
コロコロ質問内容を変更されてもどうしようもありません。
やはりhttp://dixq.net/board/board.htmlを熟読して、それにしたがって質問してください。
http://www.play21.jp/board/formz.cgi?ac ... &rln=23662を利用されるのもよいでしょう。
コロコロ質問内容を変更されてもどうしようもありません。
やはりhttp://dixq.net/board/board.htmlを熟読して、それにしたがって質問してください。
http://www.play21.jp/board/formz.cgi?ac ... &rln=23662を利用されるのもよいでしょう。
Re:pre使いました
P_C="k123"+"CMOK"
P_M=MAX("MDMC","MKOM")
を抽出した結果は
P_Ck123CMOK
P_MMDMCMKOM
で、これをファイルに出力すればいいのでしょうか?
条件として、
この場合、ダブルコーテーションは必ず行内で対になっていると考えていいですか?
=は必ずありますか?
=より前にダブルコーテーションが現れることはありますか?
P_M=MAX("MDMC","MKOM")
を抽出した結果は
P_Ck123CMOK
P_MMDMCMKOM
で、これをファイルに出力すればいいのでしょうか?
条件として、
この場合、ダブルコーテーションは必ず行内で対になっていると考えていいですか?
=は必ずありますか?
=より前にダブルコーテーションが現れることはありますか?