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

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

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

Rustは、MoFoが支援するプログラミング言語。高速性を維持しつつも、メモリ管理を安全に行うことが可能な言語です。同じコンパイル言語であるC言語やC++では困難だったマルチスレッドを実装しやすく、並行性という点においても優れています。

Q&A

解決済

3回答

756閲覧

Rustで2つの値の入力を1行に行う。

kazato

総合スコア5

Rust

Rustは、MoFoが支援するプログラミング言語。高速性を維持しつつも、メモリ管理を安全に行うことが可能な言語です。同じコンパイル言語であるC言語やC++では困難だったマルチスレッドを実装しやすく、並行性という点においても優れています。

0グッド

0クリップ

投稿2023/02/04 16:38

実現したいこと

Rustで1行に2個の入力を受け取る・

ここに質問の内容を詳しく書いてください。
(例)
Rustで以下の入出力となるコードを書きたいです。質問が分かりにくいため、参考に実現したい動作となるCでのコードを添付します。

該当のソースコード

Rust

1use proconio::input; 2 3fn main() { 4 input! { 5 a: i32, 6 b c: i32,i32 7 s: String, 8 } 9 println!("{} {}", a + b + c, s); 10

エラー
error: this file contains an unclosed delimiter

C

1#include<stdio.h> 2int main() 3{ 4 int a,b,c; 5 char s[101]; 6 scanf("%d", &a); 7 scanf("%d %d",&b,&c); 8 scanf("%s",s); 9 printf("%d %s\n",a+b+c,s); 10 return 0; 11}

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

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

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

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

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

iFQ7Vj

2023/02/05 00:46 編集

mainの括弧を閉じていないだけかと思いますが。 エラーを読んでください
guest

回答3

0

エラーの内容ですが、閉じられていない括弧があるとのことです
ここでは、fn main() {}の最後の閉じ括弧}が無い状態です

また、inputマクロ内のb c: 32i, 32i,の行はこのままではエラーが出てしまうので、
b: 32i,c: 32i,に分割するか、タルプ型の(b, c): (32i, 32i)にしましょう

Cのプログラムもそうですが、スペースと改行は同じ区切り文字として扱われます。
そのため、同じ行から読み取りたい場合でもプログラムの行は分けて結構です
また、複数行から読み取りたい場合でも1行にまとめても良いのです。
どんな区切り方をしても同じプログラムで対応でき、プログラム上の区切り方も自由ということですね

Rust

1use proconio::input; 2 3fn main() { 4 input! { 5 a: i32, b: i32, c: i32, 6 // (a, b, c): (i32, i32, i32), でも可 7 // 上記の通り a: i32, (b, c): (i32, i32), でも大丈夫です 8 s: String, 9 } 10 println!("{} {}", a + b + c, s); 11}

C

1#include <stdio.h> 2 3int main() { 4 int a, b, c; 5 char s[101]; 6 scanf("%d %d %d %s", &a, &b, &c, &s); 7 printf("%d %s\n", a + b + c, s); 8 return 0; 9}

投稿2023/02/05 01:39

編集2023/02/05 02:13
iFQ7Vj

総合スコア52

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

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

0

ベストアンサー

error: this file contains an unclosed delimiter

まず、このエラーから直しましょう。これはカッコなどの閉じ忘れがあるときに起きるエラーです。

DeepLによる機械翻訳:

error: このファイルには閉じられていない区切り文字が含まれています。

Rustコードの10行目に}がありません。それを追加するとエラーが消えます。

次にproconioクレートのinput!マクロの使い方ですが、1行から複数の値を読みたいときは、(i32, i32)のようなタプル型か、[i32; n]のような配列型を使います。後者は変数nで指定した数だけ値を読み取ります。

今回は入力の2行目の値は2つと決まっているようですので(i32, i32)を使うのが良いでしょう。

以下のようなコードになります。

rust

1use proconio::input; 2 3fn main() { 4 input! { 5 a: i32, 6 (b, c): (i32, i32), 7 s: String, 8 } 9 println!("{} {}", a + b + c, s); 10}

このプログラムに、以下の入力を与えたところ、正しく動作しました。

入力

1 2 3 abc

出力

6 abc

input!マクロについては、以下のドキュメントにいくつか例が載っていますので、参考にしてください。

投稿2023/02/05 00:57

編集2023/02/05 00:58
tatsuya6502

総合スコア2035

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

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

0

エラーの内容をしっかり読めばわかる問題でした。

投稿2023/03/01 12:40

kazato

総合スコア5

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問