cBlog

Tips for you.

fgetsとsscanfで可変個の文字列を読み込む

スポンサーリンク
※当ブログのAmazon、iTunes、サウンドハウス等のリンクはアフィリエイトを利用しています。

paizaをやってみたんですが、C言語でやったところsscanfで可変個の文字列を読み込む方法で詰まりました。

以下のようにやってみたんですが、string.hに頼ったところが不満です。stdio.hだけで簡潔に書く方法無いですかね?

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

int main(void) {
    char str[1000];
    int N;
    char *head;
    char *token;
    int a[100];
    int i;

    fgets(str, sizeof(str), stdin);
    sscanf(str, "%d\n", &N);

    fgets(str, sizeof(str), stdin);
    head = str;
    for (i = 0; i < N; i++) {
        token = strtok(head, " ");
        sscanf(token, "%d", &a[i]);
        head = NULL;

        if (i < N - 1) {
            printf("%d ", a[i]);
        } else {
            printf("%d\n", a[i]);
        }
    }

    return 0;
}