テキストファイルからの文字列読み出しで
”Http Port=80”
とあった場合、ポート番号の80のみをstrcpyでコピーしたいのですが、
どうやれば実現できるでしょうか?
文字列検索の質問です
Re:文字列検索の質問です
早速の回答ありがとうございます。
strstr()を使用することで解決しました。
ありがとうございましたm(__)m
また、質問の際は宜しくお願いします。
strstr()を使用することで解決しました。
ありがとうございましたm(__)m
また、質問の際は宜しくお願いします。
Re:文字列検索の質問です
すいません、ちょっと気になったので、再度質問させてもらいます。
ポート番号が変わることがあった場合、”Http Port=”までは確定しているので、
strstrで文字列が一致した場合、以降の文字列を取得する、というようにしたいの
ですが、どうすれば出来るでしょうか?
ポート番号が変わることがあった場合、”Http Port=”までは確定しているので、
strstrで文字列が一致した場合、以降の文字列を取得する、というようにしたいの
ですが、どうすれば出来るでしょうか?
Re:文字列検索の質問です
ポート番号の後ろはすぐ改行なのであれば、改行まで読むというようにすればよいのではないでしょうか?
テキストモードとバイナリモードとでは、Windows環境の場合改行コードが変わってくるので注意
して下さい。
テキストモードとバイナリモードとでは、Windows環境の場合改行コードが変わってくるので注意
して下さい。
Re:文字列検索の質問です
>フリオさん
それ以降の文字列は、サーバー名やルートパスが書かれていますが、改行されています。
>シエルさん
改行まで読むというのは、"\n"までということですよね?
改行コードが変わるのに注意というのは具体的にどう注意すればいいのですか?
いろいろ検索したのですが、よくわかりません。自分はwindows xp環境で.txtファイルの読み込みを
しようとしています。
それ以降の文字列は、サーバー名やルートパスが書かれていますが、改行されています。
>シエルさん
改行まで読むというのは、"\n"までということですよね?
改行コードが変わるのに注意というのは具体的にどう注意すればいいのですか?
いろいろ検索したのですが、よくわかりません。自分はwindows xp環境で.txtファイルの読み込みを
しようとしています。
Re:文字列検索の質問です
汎用性を考慮する必要がなければ
char *parameter = "Http Port=80";
char sPortNo[7];
strcpy(sPortNo, "parameter[10]); //10じゃなかったら11でも9でも調整 parameter[10]に&つけてくださいね
//文字化けするので編集できませんでした
以前、私が作ってた時は、"PROTOCOL_VERSION = 2.0.1"とか
色々その他の長さの違うパラメータも扱う必要があったので、"A = B"といった一定の書式にしました。
即席iniファイルですね。
"HTTP_PORT = 80"
sscanf(parameter,"%*s %*c %s",sPortNo);
//整数値のみ必要な場合
int PortNo;
sscanf(parameter,"%*s %*c %d",&PortNo);
(追記)
sscanf(parameter,"Http Port=%s",sPortNo);//まぁ冗談はさておき、こういうのがいいでしょうねw

char *parameter = "Http Port=80";
char sPortNo[7];
strcpy(sPortNo, "parameter[10]); //10じゃなかったら11でも9でも調整 parameter[10]に&つけてくださいね
//文字化けするので編集できませんでした
以前、私が作ってた時は、"PROTOCOL_VERSION = 2.0.1"とか
色々その他の長さの違うパラメータも扱う必要があったので、"A = B"といった一定の書式にしました。
即席iniファイルですね。
"HTTP_PORT = 80"
sscanf(parameter,"%*s %*c %s",sPortNo);
//整数値のみ必要な場合
int PortNo;
sscanf(parameter,"%*s %*c %d",&PortNo);
(追記)
sscanf(parameter,"Http Port=%s",sPortNo);//まぁ冗談はさておき、こういうのがいいでしょうねw

Re:文字列検索の質問です
>改行まで読むというのは、"\n"までということですよね?
>改行コードが変わるのに注意というのは具体的にどう注意すればいいのですか?
>いろいろ検索したのですが、よくわかりません。自分はwindows xp環境で.txtファイルの読み込みを
>しようとしています。
Windowsは改行コードを0x0D0A(\r\n)として表すらしいのですが、
fopen("test.txt","r")としてテキストモードで読むと勝手にこの改行コードを"\n"だけに
直した状態で読み込んでくれるんです。
逆にfopen("test.txt","rb")としてバイナリモードで読むと、そのままデータを読み込むので
"\r\n"として改行コードを読んでしまいます。
そのため、バイナリモードで読んだときは、"\r"の文字があったら改行の始まりを表すことになります。
なので、もしテキストモードで読み込むのであれば"\n"まで読むということで構いません。
>改行コードが変わるのに注意というのは具体的にどう注意すればいいのですか?
>いろいろ検索したのですが、よくわかりません。自分はwindows xp環境で.txtファイルの読み込みを
>しようとしています。
Windowsは改行コードを0x0D0A(\r\n)として表すらしいのですが、
fopen("test.txt","r")としてテキストモードで読むと勝手にこの改行コードを"\n"だけに
直した状態で読み込んでくれるんです。
逆にfopen("test.txt","rb")としてバイナリモードで読むと、そのままデータを読み込むので
"\r\n"として改行コードを読んでしまいます。
そのため、バイナリモードで読んだときは、"\r"の文字があったら改行の始まりを表すことになります。
なので、もしテキストモードで読み込むのであれば"\n"まで読むということで構いません。
Re:文字列検索の質問です
char *parameter = "Http Port=80";
char sPortNo[7];
①strcpy(sPortNo, ¶meter[10]);
②sscanf(parameter,"Http Port=%s",sPortNo);
上記実装で、確実にsPortNoに"80"を設定することが出来ました。
①と②どちらでも出来るのですが、汎用性を考えるならどちらが好ましいでしょうか?
>シエルさん
丁寧な説明ありがとうございました。
バイナリモードで読むときは気をつけます。
char sPortNo[7];
①strcpy(sPortNo, ¶meter[10]);
②sscanf(parameter,"Http Port=%s",sPortNo);
上記実装で、確実にsPortNoに"80"を設定することが出来ました。
①と②どちらでも出来るのですが、汎用性を考えるならどちらが好ましいでしょうか?
>シエルさん
丁寧な説明ありがとうございました。
バイナリモードで読むときは気をつけます。