質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

4回答

8873閲覧

複数行の文字列の入力

temp32508081

総合スコア12

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2020/04/19 11:06

複数行の文字列の入力
abcde
fghij
があるとき

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

int main(void){

char buf[50]; fgets(buf, sizeof(buf), stdin); char s1[10]; char s2[10]; sscanf(buf, "%s %s", s1, s2); printf("%s\n",s1); printf("%s\n",s2);

}

これでは入力を呼び出すことができません。複数行の文字列の入力はどのように行えばよろしいでしょうか。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

fgetsは1行ごとの入力になります。
sscanfを使わなくてもよければfgetsを2回呼び出すことで2行入力できます。

C

1#include <stdio.h> 2#include <string.h> 3int main(void){ 4 5char s1[10]; 6char s2[10]; 7 8fgets(s1, sizeof(s1), stdin); 9fgets(s2, sizeof(s2), stdin); 10 11printf("%s",s1); 12printf("%s",s2); 13 14return 0; 15}

投稿2020/04/19 11:24

etsuhisa

総合スコア416

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

入力して何をしたいのかによりますが、同じ事を2行に対してやりたいなら、繰り返せば良いです。

C

1#include <stdio.h> 2#include <string.h> 3 4int main(void){ 5 6char buf[50]; 7char s1[10]; 8char s2[10]; 9int n; 10 11for(n=0; n<2; n++){ 12 fgets(buf, sizeof(buf), stdin); 13 sscanf(buf, "%s %s", s1, s2); 14 15 printf("%s\n",s1); 16 printf("%s\n",s2); 17} 18}

投稿2020/04/19 11:23

otn

総合スコア84798

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

D:\work>cl foo.c Microsoft(R) C/C++ Optimizing Compiler Version 19.25.28612 for x64 Copyright (C) Microsoft Corporation. All rights reserved. foo.c Microsoft (R) Incremental Linker Version 14.25.28612.0 Copyright (C) Microsoft Corporation. All rights reserved. /out:foo.exe foo.obj D:\work>foo abc def ← 入力 abc ← s1 def ← s2

入力できてますけど、何が問題ですか?

[追記] あぁ、複数の入力か。
fgets は改行までを読みこむので、fgetsをN回呼べばN行入力できます。

投稿2020/04/19 11:12

編集2020/04/19 11:29
episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

解決しました。ありがとうございます。

投稿2020/04/19 13:06

temp32508081

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問