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

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

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

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

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

569閲覧

xcodeでc++のコードを永遠に標準出力されない。(xcodeのトラブル)

HearthXml

総合スコア51

C

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

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/06/30 14:34

編集2018/07/02 11:04

下記のc++のコードをxcodeで実行したところ、入力を受け付けた後、何も反応を返しません。
しかし、
while(scanf("%s", s)
のところにブレイクポイントを置くと正常に結果を出力しました。

プログラムの内容はデータ構造のスタックを再現したものです。
期待される動作は逆ポーランド記法の数式を入力した後に、結果を返します。
下記のサイトでは正常の動きました。
AOJ競技プログラミングコンテスト

このことからxcodeに何か不具合があるかと思うのですが、自分では解決できずにいます。

c++

1 2#include <stdio.h> 3#include <stdlib.h> 4#include <string.h> 5 6int top, S[1000]; 7 8void push(int x){ 9 S[++top] = x; 10} 11 12int pop(){ 13 top--; 14 return S[top+1]; 15} 16 17int main(){ 18 int a, b; 19 top = 0; 20 char s[100]; 21 while(scanf("%s", s) != EOF){ 22 if(s[0] == '+'){ 23 a = pop(); 24 b = pop(); 25 push(a+b); 26 }else if(s[0] == '-'){ 27 b = pop(); 28 a = pop(); 29 push(a-b); 30 } else if(s[0] == '*'){ 31 a = pop(); 32 b = pop(); 33 push(a * b); 34 } else{ 35 push(atoi(s)); 36 } 37 } 38 printf("%d¥n", pop()); 39 return 0; 40} 41

環境
MacBook Pro (Retina, 15-inch, Mid 2015)
OS High Sierra

xcode 9.3

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

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

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

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

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

MasakiHori

2018/06/30 16:25

バッファがフラッシュされてないだけではないでしょか? 試してないですけど `return 0;`の後に `fflash(stdout);`を追加すればいけるのでは?
HearthXml

2018/07/02 11:03

return 0の後にfflash(stdout)を使ったら永遠にfflashは使われないと思うんですけど。自分で調べてfflashを使ってみましたが変わりませんでした。
guest

回答2

0

ベストアンサー

EOFを入力するまで何も出力されないようですが、EOFは入力しているのでしょうか?
Ctrl+DでEOFを入力できます。

投稿2018/07/02 01:09

fuzzball

総合スコア16731

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

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

HearthXml

2018/07/02 12:40

EOFってよく分からないんですよね。 End Of Fileの略で参照エラーっぽい時に出るものという認識です。 終わりが分からない標準入力にはeofを検知すればいいと競技プログラミングの定石として理解せず使ってました。
guest

0

まず、scanf は危険な関数なので使わないようにしましょう。
100文字以上の入力を行うと暴走します

あと、最初に記号を入力することで、このプログラムの動作は破綻します
初めのpopの動作で、topの変数はマイナスになってしまいます。
これまた暴走しますんで、これをどーにかしましょう

リンク先は見てませんが、同一のコードがそこに載っていて、そこで正常動作すると言っているのであれば、そのリンク先のほうが間違っています。


このことからxcodeに何か不具合があるかと思うのですが、自分では解決できずにいます。

とありますが、残念ながら不具合があるのはそのコードの方、あるいはリンク先の方だと思われます

投稿2018/07/02 00:46

編集2018/07/02 00:49
y_waiwai

総合スコア87719

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

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

HearthXml

2018/07/02 11:12

scanf の危険性については知りませんでした。ありがとうございます。 自分が上記のプログラムを書いた理由は競技プログラミングの練習問題を解きたいからです。審査が通過すればそれで十分なんです。 リンク先でコードを投稿すると期待する値を出力するか判定してくれます。
y_waiwai

2018/07/02 11:15

そのリンク先の実行結果を正とするなら、実マシンでの実行はしないようにしましょう。 間違った結果を持ってきて、それを言語やシステムのせいにするというのは、やっぱり間違ってますぜ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問