ID非公開

2018/11/30 5:29

66回答

c言語の質問です。 以下のような ; で区切られた文字列(県名)があります。

C言語関連44閲覧xmlns="http://www.w3.org/2000/svg">25

ベストアンサー

0

その他の回答(5件)

0

#include "string.h" str="tokyo;saitama;kanagawa;chiba" int i,max; max=strlen(str); for(i=0;i<max;i++) if(str[i]==';')str[i]='¥r'; puts(str);

0

strtokを使うのがいいんでしょうけど、もう出てるので他の方法を。 C++ならofstreamでstrをテキストファイルに保存して、ifstreamで分けられます。 string str[4],other; ifstream ifs("test.txt"); ifs>>str[0]>>other>>str[1]>>other>>str[2]>>other>>str[3]; ifs.close(); めっちゃ汚いですけど、複数行に渡るときなんかは便利です。

0

~コード例~ const char* p = str; for (;;) { const char* const q = strchr(p, ';'); fwrite(p, q ? q - p : strlen(p), 1, stdout); fputs("\n", stdout); if (q) p = &q[1]; else break; } 《解説》 strchr 関数を使ってみました。(#include <string.h> を追加してください) str を p に設定し、for 文に入ります。 strchr(p, ';') によって区切り文字の ';' を探し、結果を q として取得します。 fwrite で p から q までの文字群を出力し、そして p を q + 1 の位置に再設定し処理を繰り返します。 最終的に ';' が見つからない状況となりますので、その場合は p から '\0' までの文字群全部を出力して for 文を終えます。

0

#include<stdio.h> int main(void) { char str[1024]; int i; printf("==>"); scanf("%s",str); for(i=0;str[i]!='\0';i++){ if(str[i]==';')printf("\n"); else printf("%c",str[i]); } printf("\n"); return 0; } 画面に==>が表示されたら、tokyo;saitama;kanagawa;chibaを入力すれば、 tokyo saitama kanagawa chiba が表示される。 一定ではないものをプログラム内で定義すれば、変化する度に再コンパイルが必要になる。そんなものをプログラムで処理するなんて無意味、、、、、

1

#include <stdio.h> int main(void) { __const char *str = "tokyo;saitama;kanagawa;chiba"; __const char *p; __for (p = str; *p; p++){ ____if (*p == ';'){ ______putchar('\n'); ____} else { ______putchar(*p); ____} __} __putchar('\n'); __return 0; }

1人がナイス!しています