入力した文字列から値をそれぞれ取得

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
あしか

入力した文字列から値をそれぞれ取得

#1

投稿記事 by あしか » 10年前

おはようございます。
以前質問させていただいたものです。
返事をできず、日が空いてしまい申し訳ございません。
もう一度、質問させてもらいます。

最初のコード(6文字の数値)と そのあとに a5 b10 c15 ←(順不動で後ろの値をそれぞれ保存して使用したい)

123456 a10 b20 c15  or 456123 b a c  or 654321 c b a 等
gets等で入力して行う。
strncmpを使って作成。 お願いします。

ソースに起こせない理由は、空白の処理でエラーがでてしまうのと、
空白で区切って、aの値 bの値 cの値をそれぞれ空白の後ろのaかbかcか判定して、その値をそれぞれ保存する部分です。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 入力した文字列から値をそれぞれ取得

#2

投稿記事 by みけCAT » 10年前

あしか さんが書きました:以前質問させていただいたものです。
返事をできず、日が空いてしまい申し訳ございません。
もう一度、質問させてもらいます。
申し訳ないと思うのなら、質問する前にまず返事をしたらどうですか?
文字列から空白までの情報を取得 • C言語交流フォーラム ~ mixC++ ~
【追記】
前のトピックはログインしないと返信できなくなっている(?)ようなので、返事をこのトピックで書くといいかもしれません。
あしか さんが書きました:最初のコード(6文字の数値)と そのあとに a5 b10 c15 ←(順不動で後ろの値をそれぞれ保存して使用したい)

123456 a10 b20 c15  or 456123 b a c  or 654321 c b a 等
gets等で入力して行う。
strncmpを使って作成。 お願いします。
もしも課題の丸投げであるならば、禁止事項です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

かずま

Re: 入力した文字列から値をそれぞれ取得

#3

投稿記事 by かずま » 10年前

あしか さんが書きました: 最初のコード(6文字の数値)と そのあとに a5 b10 c15 ←(順不動で後ろの値をそれぞれ保存して使用したい)

123456 a10 b20 c15  or 456123 b a c  or 654321 c b a 等
a や b の後に数字が来ないこともあるんですね。その場合は 0 と解釈するんでしょうか?
前回の例には cc12 というのがありましたが、a, b, c は 1文字だけなんですよね。
あしか さんが書きました: ソースに起こせない理由は、空白の処理でエラーがでてしまうのと、
空白で区切って、aの値 bの値 cの値をそれぞれ空白の後ろのaかbかcか判定して、その値をそれぞれ保存する部分です。
ソースに起こせないのに、エラーが出るんですか?
どんなエラーですか?
おそらく、エラーが出るソースは書けたけれど、正しいソースが書けない
という意味ですよね。それなら、エラーが出るソースを添付してください。
そうすれば丸投げではありません。

次のコードは strncmp を使っていないので、課題の解答にはならないと
思いますが、参考になるところがあるんじゃないでしょうか?

コード:

#include <stdio.h>  // fgets, printf
#include <stdlib.h> // atoi
#include <string.h> // strchr

int main(void)
{
    int n, a, b, c;
    char buf[256];
    while (fgets(buf, sizeof buf, stdin)) {
        n = atoi(buf);
        a = atoi(strchr(buf, 'a') + 1);
        b = atoi(strchr(buf, 'b') + 1);
        c = atoi(strchr(buf, 'c') + 1);
        printf("  n=%d, a=%d, b=%d, c=%d\n", n, a, b, c);
    }
    return 0;
}

閉鎖

“C言語何でも質問掲示板” へ戻る