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

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

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

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

Q&A

解決済

1回答

626閲覧

c言語 リスト エラーメッセージの原因が分かりません

MCV

総合スコア6

C

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

0グッド

0クリップ

投稿2020/06/16 19:43

前提・実現したいこと

関数void pushの中のprintf("%c\n",p->c);
のところまで実行するようにしたいので原因を教えてほしいです

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

関数の中の途中で止まってしまいます
pushする文字又はpop/endを入力してください-->n
n
eeee
ddn
fff

該当のソースコード

C ここに言語名を入力
ソースコード
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct cell {
char c;
struct cell *next;
};
struct cell *stack=NULL,*p;

void push(char data){
printf("dd%c\n",data);
p==(struct cell*)malloc(sizeof(struct cell));
printf("fff\n");
p->c=data;
printf("fff\n");
p->next=NULL;
printf("fff\n");
p->next=stack;
printf("fff\n");
stack=p;
printf("fff\n");
printf("%c\n",p->c );
}

int main(void){
char *s1 ="pop";
char *s2 ="end";
char *s3;
char in[10];

printf("pushする文字又はpop/endを入力してください-->");
scanf("%s",in);
printf("%s\n",in );
s3=in;
if (strcmp(s1,s3)==0){
printf("aaaa\n");
//pop();

}
else if(strcmp(s2,s3)==0){
printf("sss\n");
exit(1);
}
else if(strlen(in)!=1){
printf("不正な入力です\n");
printf("スタックを空にしました\n");
}
else{
printf("eeee\n");
push(in[0]);
}

return 0;

}

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

cateye

2020/06/16 20:09 編集

p==(struct cell*)malloc(sizeof(struct cell)); →p=(struct cell*)malloc(sizeof(struct cell)); コンパイル出来ますか?
MCV

2020/06/16 20:13

そこでしたか、、 コンパイルすることができました。 ありがとうございます。
thkana

2020/06/16 22:15

> エラーメッセージの原因が分かりません という質問なら出たエラーメッセージを載せましょう。
guest

回答1

0

ベストアンサー

エラーメッセージを記載しましょう!

イコールが1つ多いです。

p==(struct cell*)malloc(sizeof(struct cell));

p=(struct cell*)malloc(sizeof(struct cell));

コンパイルは修正前でも通りますよ。
p と mallocを同値評価していると解釈します。

投稿2020/06/16 22:33

DreamTheater

総合スコア1095

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問