前提・実現したいこと
C言語(プログラミング言語)初心者です。
1行目に単語の総数n、2行目以降に改行区切りでn個の単語が入力される時、
単語をアンダーバーで区切って1行で出力したいです。
(例)
入力 出力
3 red_blue_green
red
blue
green
C言語の基本的な文法が理解できておらず、大変低次元な質問で恐縮ですが
ご教授頂けるとありがたいです。
宜しくお願いします。
発生している問題・エラーメッセージ
strtok関数を使ってプログラミングしようと試みていますが、
・3行目以降が出力出来ない(NULLなってしまう。)
・繰り返し処理をどのように記載すれば出力されるか分からない。
・アンダーバーを最後の単語の後にだけ付けない書き方が分からない。
と、散々な状況です。
該当のソースコード
。#include <stdio.h> 。#include<string.h> 。#define N 1000 int main(void){ int n; char str[N]; fgets(str, sizeof(str), stdin); sscanf(str,"%d",&n); //単語の数n個 char buf[N]; fgets(buf,sizeof(buf),stdin); char *tp; tp=strtok(buf,"\n"); printf("%s_",tp); tp=strtok(NULL,"\n"); printf("%s_",tp); tp=strtok(NULL,"\n"); printf("%s_",tp); return 0; }
#出力結果
red_(null)_(null)_
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/10 22:04