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

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

 詳しくはこちら



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

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


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

No.19600

カンマで区切られた文字列を2次元配列に格納
投稿者---まこと(2005/01/27 21:57:28)


カンマで区切られた文字列を2次元配列に格納
したいのですが、格納する処理が2箇所できて
しまいます。
上手く1箇所でできる方法を教えてください。

<pre>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

main()
{
char data[] = {001,002,1003,1004,201};
char str[15][10];
int i,j,k=0;

temp[0] = '\0';
for(i=j=0; i&lt;strlen(data); i++){
if(data[i] != ','){
temp[j] == data[i];
} else {
if(temp[0] != '\0'){
strncpy(str[k],temp,strlen(temp));
k++;
temp[0] = '\0';
j = 0;
}
}
}
if(temp[0] != '\0'){
strncpy(str[k],temp,strlen(temp));
k++;
}
}


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:カンマで区切られた文字列を2次元配列に格納 19602 ナナシー 2005/01/27 23:38:24


No.19602

Re:カンマで区切られた文字列を2次元配列に格納
投稿者---ナナシー(2005/01/27 23:38:24)


出力結果を明示してください。
そうしないと要件がわかりません。


この投稿にコメントする

削除パスワード

No.19607

Re:カンマで区切られた文字列を2次元配列に格納
投稿者---まこと(2005/01/28 00:05:30)


カンマで区切られた文字列を2次元配列に格納です。
data[]={001,002,1003,1004,201}
の場合は、
str[0]=001
str[1]=002
 :
と格納したいのです。
data[]={1001} のような場合もあり、この場合は、str[0]
に格納します。

配列に格納しているところが2箇所あるので1箇所
にまとめて上手くできる方法はないでしょうか。

正しく字下げされていなかったので再度、添付します。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main()
{
    char data[] = {001,002,1003,1004,201};
    char str[15][10];
    char temp[15];
    int i,j,k=0;

    temp[0] = '\0';
    for(i=j=0; i&lt;strlen(data); i++){
        if(data[i] != ','){
            temp[j] == data[i];
        } else {
            if(temp[0] != '\0'){
                strncpy(str[k],temp,strlen(temp));
                k++;
                temp[0] = '\0';
                j = 0;
            }
        }
    }
    if(temp[0] != '\0'){
        strncpy(str[k],temp,strlen(temp));
        k++;
    }
}




この投稿にコメントする

削除パスワード

No.19612

Re:カンマで区切られた文字列を2次元配列に格納
投稿者---RAPT(2005/01/28 00:19:33)


char data[] = {001,002,1003,1004,201};
char 型は、-128〜127、あるいは 0〜255 までしか格納できません。 そのため、char型に1004は代入できません。 また、即値指定の場合、0で始まると8進数とみなされます。 001, 002は影響ありませんが、010は、10進数の10ではなく、10進数の8となります。
for(i=j=0; i<strlen(data); i++){
dataは'\0'で終了していないため、strlenは正しい値が取得できるか不明です。 ここまでで既にかなり勘違いがありそうなので、一旦終了します。



この投稿にコメントする

削除パスワード

No.19615

Re:カンマで区切られた文字列を2次元配列に格納
投稿者---まこと(2005/01/28 10:10:33)


>char data[] = {001,002,1003,1004,201};

data[] = {"001,002,1003,1004,201"};
data[] = {"001"};
です。
文字列です。

添付したソースにも誤りがありました。



この投稿にコメントする

削除パスワード

No.19631

Re:カンマで区切られた文字列を2次元配列に格納
投稿者---スー(2005/01/28 13:40:47)


どのような方法を期待しているかわかりませんが、
strtok()を使えば、いいのではないですか。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main()
{
    //char data[] = {"001,002,1003,1004,201"};
    char data[] = {"001"};
    char str[15][10];
    char *pr;
    int  i,j,k=0;

    pr = strtok(data,"," );
    strcpy(str[k++],pr);
        while (pr != NULL) {
            pr = strtok(NULL,",") ;
            if (pr != NULL) {
                strcpy(str[k++],pr);
            }
        }

    for (i=0; i<k; i++){
        printf("[%s]\n",str[i]);
    }
}








この投稿にコメントする

削除パスワード

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