VC++6.0 です。
計測機器から受信したデータ(文字列)の中から、必要なデータだけを抜き出したいのですが、
うまく抜き出すことが出来ません。アドバイスいただけませんでしょうか?
受信する文字列は 伝送制御キャラクタSTX(0x02) "文字列" 伝送制御キャラクタETX(0x03)
のように受信します。
抜き出すための目印?がキーボードで入力できるような文字列の場合は過去ログにありました以下のコードで
抜き出すことが可能でした。
抜き出すための目印を 0x02 や 0x03 にする為にはどうしたら良いでしょうか?
//文字列版
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *cut(const char *str, const char *ss, const char *es, char *buff){
/* str の ss の次から es の前までの文字列をbuff に切り出す */
char *wk, *s, *e, *c;
wk=strdup(str); if(wk==NULL)return NULL;
s=strstr(wk, ss); if(s==NULL){ free(wk); return NULL;}
c=s+strlen(ss);
e=strstr(c, es); if(e==NULL){ free(wk); return NULL; }
*e='\0';
strcpy(buff, c);
free(wk);
return buff;
}
int main(void){
const char url[]="?http://www.sample.ne.jp/";?
char buff[32];
printf("//~/:%s\n", cut(url , "//", "/", buff));
return 0;
}
No.2ベストアンサー
- 回答日時:
こちらのVC++6.0で同じソースで試しましたが、0x02、0x03でも抽出可能でした。
cut関数はそのまま、変更点は以下です。
int main(void){
const
char url[]="\x02www.sample.ne.jp\x03";
char buff[32];
printf("0x02~0x03:%s\n", cut(url , "\x02", "\x03", buff));
return 0;
}
dennou2000さんありがとうございました!!
0x02 ではダメだったんですね。
私もdennou2000さんの方法で成功しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
double型の値をchar配列に変換...
-
fgetsなどのときのstdinのバッ...
-
C言語のfor文です。 繰り返しの...
-
charでの計算?
-
入力された文字列から整数だけ...
-
c言語の問題の説明、各所ごとに
-
Win32APIでのエディットボック...
-
バイトスワップをやりたい
-
C言語について
-
C言語 ミリ秒を日付に変換には
-
文字列ポインタを結合
-
atoi( ) の反対をやりたい
-
「char* p」と「char *p」は何...
-
テキストデータをそのままバイ...
-
制御の方法
-
int main()の・・・
-
c言語の文字列の逆順のプログラ...
-
3桁区切(コンマ)記号をつけ...
-
ftoa の作り方
-
文字列から空白を取り除きたい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
C言語のfor文です。 繰り返しの...
-
文字列から空白を取り除きたい...
-
charからLPTSTRへの変換方法
-
charでの計算?
-
配列をnビットシフトする
-
CStringをwchar_tに変換したい
-
c++ 文字列を入力して、一文字...
-
str系関数を使わずに二つの文字...
-
間接操作のレベルとは
-
int main()の・・・
-
C言語の入力した文字を反転させ...
-
atoi( ) の反対をやりたい
-
switch文で文字を比較すること...
-
double型の値をchar配列に変換...
-
テキストデータをそのままバイ...
-
Win32APIでのエディットボック...
-
干支のプログラム
-
コンパイルエラー invalid ope...
-
間接参照のレベルが異なっています
おすすめ情報