【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.20960

文字列を分割したい
投稿者---青島(2005/05/06 01:09:00)


こんにちは。

バーコードリーダーのプログラムをC言語で開発しています。
C言語自体、あまりやったことはありません。
取得した文字列を分割して構造体に格納する関数を作成しています。
readdataの文字列は、関数の引数になります。

考えたのは、下記のようなコードです。

char readdata[] = "ABC,123,DEF,456";
struct field3 {
char AB[10];
char CD[10];
char EF[10];
char GH[10];
} field3;

ここから関数になります。
int i=0;
int j=0;
int st=0;
int totalLen = 0;

totalLen=(int)strlen(readdata);
for(i= 0;i<totalLen;i++){
if(readdata[i]==','){
j++;
st = 0;
}
switch(j)
{
case 2:
field3->AB[st]=readdata[i];
field3->AB[st + 1] = '\0';
st++;
break;
case 3:
field3->CD[st]=readdata[i];
field3->CD[st + 1] = '\0';
st++;
break;
}
}
return ;

上手くいかないのですが、何故だか解りません。
ご教示願えないでしょうか。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:文字列を分割したい 20961 Blue 2005/05/06 01:35:26
<子記事> Re:文字列を分割したい 20962 rvr_driver 2005/05/06 06:57:36
<子記事> Re:文字列を分割したい 20963 まきじ 2005/05/06 07:56:32
<子記事> Re:文字列を分割したい 20964 おでん 2005/05/06 08:58:48
<子記事> Re:文字列を分割したい 20965 Ban 2005/05/06 09:40:36


No.20961

Re:文字列を分割したい
投稿者---Blue(2005/05/06 01:35:26)


基本的にどのような動作がしたいのでしょうか?
>char readdata[] = "ABC,123,DEF,456";
>struct field3 {
>   char AB[10];
>   char CD[10];
>   char EF[10];
>   char GH[10];
>} field3;
で、どれが AB にあたるのですか?
ソースでみると、 DEF の部分ですが。

>上手くいかないのですが
どこがうまくいかないのか具体的に記述してください。

それと環境(OS,コンパイラ,実行環境等)を明記してください。
バーコードリーダーということなので結構重要だと思いますが。

次回ソースを載せる時は
HTML変換ツールをご利用ください。




この投稿にコメントする

削除パスワード

No.20962

Re:文字列を分割したい
投稿者---rvr_driver(2005/05/06 06:57:36)


マルチポストは慎みましょう。

【掲示板ご利用上の注意】
 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!

は読めませんか?

Yahoo掲示板
http://messages.yahoo.co.jp/bbs?.mm=CP&action=m&board=1835095&tid=a1za3c8c08la1dba1a1bcaldbdj&sid=1835095&mid=44&thr=1&cur=1&dir=d


この投稿にコメントする

削除パスワード

No.20963

Re:文字列を分割したい
投稿者---まきじ(2005/05/06 07:56:32)


>取得した文字列を分割して構造体に格納する関数を作成しています。

strtok を使えばいいと思います。


この投稿にコメントする

削除パスワード

No.20964

Re:文字列を分割したい
投稿者---おでん(2005/05/06 08:58:48)


>こんにちは。
>
>バーコードリーダーのプログラムをC言語で開発しています。
>C言語自体、あまりやったことはありません。
>取得した文字列を分割して構造体に格納する関数を作成しています。
>readdataの文字列は、関数の引数になります。
>
>考えたのは、下記のようなコードです。
>
[省略]
>
>上手くいかないのですが、何故だか解りません。
>ご教示願えないでしょうか。

#include <string.h>

char readdata[] = "ABC,123,DEF,456";
struct field3 {
    char AB[10];
    char CD[10];
    char EF[10];
    char GH[10];
} field3;

/*  ここから関数になります。 */
void hoge()
{
    int i=0;
    int j=0;
    int st=0;
    int totalLen = 0;

    totalLen=(int)strlen(readdata);
    for(i= 0;i<totalLen;i++){
        if(readdata[i]==','){
            j++;
            st = 0;
        }
        switch(j){
            case 2:
                field3->AB[st]=readdata[i];
                field3->AB[st + 1] = '\0';
                st++;
                break;
            case 3:
                field3->CD[st]=readdata[i];
                field3->CD[st + 1] = '\0';
                st++;
                break;
            }
    }
}




コンパイル通りますか?
ちゃんとコンパイル出来るソースを投稿しましょう。
それと、【掲示板ご利用上の注意】を一読してください。


この投稿にコメントする

削除パスワード

No.20965

Re:文字列を分割したい
投稿者---Ban(2005/05/06 09:40:36)


>上手くいかないのですが、何故だか解りません。

どううまくいかないのか、実行結果などを示してみてください。
その他、掲示板の注意にも従ってください。

既に皆さんから助言がありますのでこれ以上あまり
書くこともないと思いますが、C 言語としては strtok を勉強して
使う方が自然だと思います。

# 既に痛感されているかもしれませんが、回答されている方々の多くは
# 複数サイトを見てますから、単に心象を下げることが多いです>マルチ

# 最大限好意的な解釈。
> ここから関数になります。
# より前がグローバル変数で、以後が関数内だとすると、
# 関数の引数次第で確かにコンパイル通せますね。
# 普通あの書き方からそうなってるとはあまり想像しないと思いますが。
# 素直にコードを見ると既に指摘済みのエラーが複数出るはずです。
# 強弁するなら、上記関数の実際の定義を書いてもらえると、
# 本当にコンパイルが通っていたことが示せるかも。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧