C言語のプログラムについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
獅音

C言語のプログラムについて

#1

投稿記事 by 獅音 » 11年前

またまた失礼します。
C言語の課題で、文字列の使い方を理解するプログラムを作成するのですが、
コンパイルしたらエラーが起きて困っています。
教えてもらえないでしょうか?よろしくお願いします。

○キーボードから氏名をローマ字で入力すると、イニシャルにして表示するプログラムを作成しなさい。
なお、キーボードから入力した氏名を格納する配列は、苗字:sei,名前は、:meiとして、入力できる最大文字数は、いずれも19文字とする。
イニシャル用の変数は、文字型配列initial[4]として宣言し、initial[0]=mei[0];などのように、1文字ずつ割り当てていく方法で行うこと。

【実行結果の例】
苗字(19文字以内):○○
名前(19文字以内):○○
○○ ○○さんのイニシャルは,○.○です。

コード:

 #include <stdio.h>
int main( void )
{
char sei[19];
char mei[19];
char initial[4];

printf( "苗字(19文字以内):" ); gets( sei );
printf( "名前(19文字以内):" ); gets( mei );

initial[0] = search_initial( mei );
initial[1] = '.';
initial[2] = search_initial( sei );
initial[3] = '\0';

printf( "%sさんのイニシャルは,%sです.\n", initial );

return 0;
}

char search_initial( const char *psz )
{
while( *psz ) {
if( !isspace( *psz ) ) return toupper( *psz );
++psz;
}
return
}


よろしくお願いします。

non
記事: 1097
登録日時: 13年前

Re: C言語のプログラムについて

#2

投稿記事 by non » 11年前

4行目 char sei[19];
5行目 char mei[19];
19文字まで入力されるなら配列は20必要です。

11行 initial[0] = search_initial( mei );
serch_initialの関数で何をしたいのでしょうか?
先頭にスペースがあったら読み飛ばし、最初に出た文字を大文字にしたいということなのでしょうか?
関数については後術。

16行 printf( "%sさんのイニシャルは,%sです.\n", initial );
seiやmeiも表示する必要があります。変数の数と%sの数を一致させましょう

コード:

char search_initial( const char *psz )
{
	while( *psz ) {
		if( !isspace( *psz ) ) return toupper( *psz );
		++psz;
	}
	return 
}
もちろん、このままでは、returnの後に何もないのでエラーですが、考え方として、
whileをスペースの間繰り返し、スペース以外になったら、whileから抜けて、大文字に変換してreturnする方がいいでしょう。

>コンパイルしたらエラーが起きて困っています。
ヘッダーファイルがないとかでしょうか?
non

獅音

Re: C言語のプログラムについて

#3

投稿記事 by 獅音 » 11年前

もっと簡単にプログラムをさくせいしたのですが、エラーが起きてしまいます。

コード:

#include <stdio.h>
int main(void)
{
char sei[20],mei[20],initial[4];

printf("苗字(19文字以内):");
scanf("%s",sei);

printf("名前(19文字以内):");
scanf("%s",mei);

printf( "\n%sさんのイニシャルは,%sです.\n",);

return 0;
}
16行目を○○ ○○さんのイニシャルは,○.○です。と表示させるにはどう入力すればいいでしょうか?

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: C言語のプログラムについて

#4

投稿記事 by みけCAT » 11年前

イニシャルというのは、苗字と名前の最初の1文字ですね。
苗字と名前をローマ字で入力してくれれば、最初の1文字を取るだけです。
printfで1文字表示するには、%cを使用します。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: C言語のプログラムについて

#5

投稿記事 by softya(ソフト屋) » 11年前

printfの%s書式は、どこかの変数からか文字列を持ってこないと表示できません。
printf( "\n%sさんのイニシャルは,%sです.\n",);
は%sが2回出てくるので対応する変数を2つ指定する必要があります。
見ての通り変数が指定されていないので、コンパイラは対応がとれていないエラー文として判定します。
あと,で終わっているのも文法違反です。

これと同じ事をnonさんは既に書いているんですが、獅音さんは見逃してしまった様です。

それ以外にはイニシャルの処理は別の問題なので、とりあえず名前と苗字表示を終わらせましょうか。

【補足】
あっと思い出しました。この質問の方ですね。こっちも終わらせてもらえると嬉しいのですが。
「C言語のプログラムについて • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?f=3&t=13320
過去の質問からして、常に参照できるように手元にC言語入門の書籍を用意しておいていただきたいんです。
この質問を見る限り、やはりC言語の文法の基本的なことを見落としていると思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

獅音

Re: C言語のプログラムについて

#6

投稿記事 by 獅音 » 10年前

長らく放置してしまいました。
前回のは、あれであっていたはずです。
貼るプログラム間違えてしまいましたかね^^;

手元にある教材は、インフ●テック・サーブさんから出版されている、はじめてのアルゴリズム、Cプログラミングはあるので、あとはプログラムを作成するうえで、1つ1つの意味を理解していきたいと思います。
もうすぐテストもあるので、分からないところも聞きにきてもよろしいでしょうか?
すみませんが、よろしくお願いします><

そして、プログラムができたので、ご指摘ありがとうございました。
また勉強して頑張ります。

コード:

#include <stdio.h>
int main(void)
{
char sei[20],mei[20],initial[4];

printf("苗字(19文字以内):");
scanf("%s",sei)

printf("\n");
printf("名前(19文字以内):");
scanf("%s",mei);

initial[0]=mei[0];
initial[1]='.';
initial[2]=sei[0];
initial[3]='\0';
printf("\n%s %sさんのイニシャルは、%sです.\n",sei,mei,initial);

return 0;
}

獅音

Re: C言語のプログラムについて

#7

投稿記事 by 獅音 » 10年前

コードが何で横になるのでしょうか・・・?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: C言語のプログラムについて

#8

投稿記事 by softya(ソフト屋) » 10年前

獅音 さんが書きました:コードが何で横になるのでしょうか・・・?
IE10だからです。互換モードをご利用ください。
※ 世界的には主流ではないIE10なので、どうしても対応が後回しになりますね。

【追記】
インデントにもご注意ください。あっちも正しいコードを張ってくださいね。

【追記の追記】
某受験事件でも有名ですがテスト中の質問にはお答え出来ませんが、テスト前の復習の質問はどんどんご質問ください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

獅音

Re: C言語のプログラムについて

#9

投稿記事 by 獅音 » 10年前

以後、気を付けます><
インデントもやっていなかったので、気を付けたいと思います。

テスト中の質問はしませんので^^;
管理人様のご迷惑にならない範囲で質問させていただくので、よろしくお願いします。

コードの貼り付けは[]の中にcode=IE10と入力すればいいのでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: C言語のプログラムについて

#10

投稿記事 by softya(ソフト屋) » 10年前

ブラウザのIE10の設定を変えてください。
「初心者でもわかる! IE で互換表示 (IE10/IE9)」
http://support.microsoft.com/kb/2618122/ja
「互換表示に切り替える方法を教えてほしい。(Internet Explorer 10) | 会員サポート > Q&A(よくあるご質問) : @nifty」
http://qa.nifty.com/cs/catalog/faq_nqa/qid_14659/1.htm
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

獅音

Re: C言語のプログラムについて

#11

投稿記事 by 獅音 » 10年前

管理人さん
すみません、わざわざQAを見つけていただいて^^;
ご丁寧にありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る