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

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

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

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

298閲覧

JavaのコードをCに変換するときのエラー

退会済みユーザー

退会済みユーザー

総合スコア0

C

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/11/23 03:33

編集2017/11/23 03:33

###前提・実現したいこと
Javaで作成したアスタリスク(*)でfor文制御により、三角形を描画するコードを書きました。
Javaのコードは正常に実行されます。
これをCでも実行する必要があり、コードを書いていますが、コンパイル時に以下のようなエラーが表示されて困っています。

###発生している問題・エラーメッセージ

extrial.c: In function 〓〓〓main〓〓〓: extrial.c:11:3: error: too few arguments to function 〓〓〓printf〓〓〓 printf(); ^ extrial.c:16:3: error: too few arguments to function 〓〓〓printf〓〓〓 printf(); ^

###該当のソースコード

C

1#include<stdio.h> 2 3int main(void){ 4 int num; 5 printf("input num="); 6 scanf(" %d", &num); 7 8 for(int i=1; i<=num; i++){ 9 printf(" * "); 10 } 11 printf(); 12 13 for(int i=1; i<=num; i++){ 14 printf(" *** "); 15 } 16 printf(); 17 18 for(int i=1; i<=num; i++){ 19 printf(" ***** "); 20 } 21 return 0; 22}

Java

1import java.io.BufferedReader; 2import java.io.IOException; 3import java.io.InputStreamReader; 4 5class Sample3_1 6{ 7 public static void main(String[] args) throws IOException 8 { 9 System.out.println("input num="); 10 BufferedReader br = 11 new BufferedReader(new InputStreamReader(System.in)); 12 13 String str = br.readLine(); 14 int num = Integer.parseInt(str); 15 16 for(int i=1; i<=num; i++){ 17 System.out.print(" * "); 18 } 19 20 System.out.println(); 21 for(int i=1; i<=num; i++){ 22 System.out.print(" *** "); 23 } 24 25 System.out.println(); 26 for(int i=1; i<=num; i++){ 27 System.out.print(" ***** "); 28 } 29 30 31 } 32 33 }

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

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

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

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

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

guest

回答2

0

問題がある場合にはきちんとエラー・メッセージを読みましょう。
特にコンパイル時の問題の多くは、エラー・メッセージにきちんと表されています。

extrial.c:11:3: error: too few arguments

11行目(および16行目)のprintf関数に対するエラー・メッセージです。
問題の原因がズバリ記されています。

投稿2017/11/23 04:03

amadablam

総合スコア402

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

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

0

ベストアンサー

JavaのSystem.out.printlnに対して、Cのprintfは引数なしで呼び出せません。
次のように明示的に改行コードを渡してください。

C

1printf("\n");

追記

無言の低評価がついているので、ちょっと追記します。
Javaの経験者がCでコーディングをする際、質問のような疑問にぶつかるのは当然だと思います。
今まで当たり前に省略できたものが、省略できなくなるのですから。

そのうえで、回答の方針は次の三点に集約できるかと思います。

  • C言語はそのような仕様でないのだと端的に書くこと (私の回答)
  • エラーメッセージの読み方を伝え、推測を促すこと (amadablamさんの回答)
  • 関数の定義を自ら調べるよう促すこと

アプローチが異なるだけで、私はどれが優れていてどれが劣っているのだとは思いません。
ひょっとして、魚を与えるなという意思でマイナスを付けたのかわかりませんが...

投稿2017/11/23 03:35

編集2017/11/24 01:41
LouiS0616

総合スコア35658

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問