###リスト構造を用いたプログラミングでのコンパイルエラー
画面から"n"が入力されるまで(名前、点数)を入力し続け、"n"が入力されたら最高点とその名前、最低点と名前を表示するプログラムを作りました。
しかしコンパイル時の警告の処理がわからないため教えて欲しいです。
よろしくおねがいします。
発生している問題・エラーメッセージ
c:19: 警告: implicit declaration of function ‘strcmp’ c:24: 警告: format ‘%d’ expects type ‘int *’, but argument 3 has type ‘int’ c:36: 警告: assignment makes integer from pointer without a cast c:54: 警告: assignment makes pointer from integer without a cast
該当のソースコード
c言語
1#include <stdio.h> 2#include<stdlib.h> 3 struct SCORE_DATA { 4 char name[256]; 5 int score; 6 }; 7typedef struct SCORE_DATA DATA; 8 9int main(void){ 10 int i=1; 11 char yn[100]; 12 DATA *p,*max,*min,*q; 13 DATA *listhead=NULL; 14 DATA *listtail=NULL; 15 //続けるかどうかの確認 16 while(1){ 17 printf("データ入力を続けますか(y/n)→ "); 18 scanf("%s" , yn); 19 if(strcmp(yn,"n")){ 20 //yの場合の動作 21 //データの入力 22 p=(DATA*)malloc(sizeof(DATA)); 23 printf( "%d 人目のスコア: 名前と点数を入力(スペース区切り)→ ", i ); 24 scanf( "%s %d", p->name, p->score ); 25 //1個目のデータの場合 26 if ( listhead == NULL ) { 27 listhead=p; 28 listtail=p; 29 //maxとminに代入しておく 30 max=p; 31 min=p; 32 i++; 33 } 34 //2個目以降のデータの場合 35 else { 36 listtail->score=p; 37 listtail=p; 38 //データの比較と代入 39 if(max->score < p->score) max=p; 40 if(min->score > p->score) min=p; 41} 42 i++; 43//yの時の動作の終わりのかっこ 44} 45 else if (strcmp(yn,"y")){ 46 //nの場合の動作 47break; 48 }; 49 }; 50 //maxやminの表示 51 printf( "最高点:%3d点(%sさん)\n", max->score, max->name); 52 printf( "最低点:%3d点(%sさん)\n", min->score, min->name); 53 while(p != NULL){ 54 q=p->score; 55 free(p); 56 p=q; 57 } 58return 0; 59} 60
回答2件
あなたの回答
tips
プレビュー