C言語 初心者
コンパイルエラーはでないのに、
登録した単語を表示できません。
表示のところだと思うのですが・・・
/********************/
/*--- 英単語辞書 ---*/
/********************/
#include <stdio.h>
#include <stdio.h>
#define NUMBER 50 /*登録数*/
#define MAX_NAME 20 /*単語の最大文字数*/
#define MAX_WAYAKU 30 /*和訳の最大文字数*/
/************************/
/*--- 単語帳の構造体 ---*/
/************************/
typedef struct {
char name[MAX_NAME]; /*単語*/
char wayaku[MAX_WAYAKU]; /*和訳*/
}words;
/************************************************/
/*------ 単語と和訳の登録 ------*/
/* 関数tourokuword()は引数words tango[]の、イン*/
/*クリメントしたtango_counの順番に格納する。 */
/************************************************/
void tourokuword(words tango[], int tango_count)
{
char word[MAX_NAME]; /*単語の名前*/
char wa[MAX_WAYAKU]; /*単語の和訳*/
printf("[単語]:");
scanf("%s", word);
/*単語を単語帳に登録*/
strcpy(tango[tango_count].name, word);
printf("[和訳]:");
scanf("%s", wa);
/*和訳を単語帳に登録*/
strcpy(tango[tango_count].wayaku, wa);
}
/***********************************************/
/*----- 単語の交換 -----*/
/***********************************************/
void swaps(words *x, words *y)
{
words temp = *x;
strcpy(temp, *x);
strcpy(*x, y);
strcpy(*y, temp);
}
/***********************************************/
/*----- 登録された単語を表示する -----*/
/* 関数printword()は引数words tango[]の、イン */
/*クリメントしたtango_counの順番に表示する。 */
/***********************************************/
void printword(words tango[], int tango_count)
{
int i = 0;
int j;
puts("登録されている単語を表示します。\n");
for( i = 0; i < tango_count; i++){
for(j = i + 1; j < tango_count; j++){
if(strcmp(tango[i].name, tango[j].name) > 0){
swaps(&tango[i], &tango[j]);
}
}
}
for (i = 0 ; i < tango_count; i++) {
printf("[単語]:%s\n",tango[i].name); /*単語の表示*/
printf("[和訳]:%s\n",tango[i].wayaku); /*和訳の表示*/
}
}
/****************/
/*--- メイン ---*/
/****************/
int main(void)
{
words tangochou[NUMBER]; /*単語帳に50件登録*/
int menu_num; /*メニュー番号*/
int slct_num; /*選択番号*/
int tango_count = 0; /*登録数のカウント*/
while(1){
/****************************/
/*--- メニュー番号の入力 ---*/
/****************************/
do {
printf("1・・・登録. 2・・・表示. 3・・・終了.\n");
printf("メニュー番号を入力してください。:");
scanf("%d", &menu_num); /*メニュ番号の入力*/
if (menu_num > 0){
break;
}
}while(menu_num != 0); /*メニュ番号が該当しない時は再入力*/
switch (menu_num){
case 1 :/*--- メニュー 1:単語と和訳の登録 ---*/
while(1) {
if (tango_count < NUMBER){
printf("英単語と和訳を入力してください。:\n");
/*単語と和訳の登録*/
tourokuword(tangochou, tango_count);
tango_count++;
}else {
puts("50件以上です。\n");
return 0; /*50件以上は終了する*/
}
/*登録を続けるか?*/
printf("続けますか【Yes・・・1/No…0】:");
scanf("%d", &slct_num);
if(slct_num != 1){ /*0なら終了。1なら継続。*/
break;
}
} break;
case 2 :/*--- メニュー 2:登録された単語と和訳の表示 ---*/
printword(tangochou, tango_count); /*単語と和訳の表示*/
break;
case 3 :/*--- メニュー 3:終了 ---*/
puts("終了します。\n");
return (0);
default:/*--- メニュー 4:非メニュー番号の処理 ---*/
puts("メニュー番号が間違っています。");
break;
}
}
return (0);
}
お礼
回答ありがとうございます! なかなかないですよね>< これを最初は100個探せって先生に言われて無理って言ったら 50個にしてくれたんですが、50個もなかなかきついです(´;ω;`) ending (s)が邪魔をするんですw