ページ 1 / 1
宿題をやっておりまして・・・・・。2
Posted: 2009年1月02日(金) 18:44
by 孫
宿題なのですが、『宿題をやっておりまして・・・・・。』で、
Dixg(管理人)に言われたとうり、C++を入れて自力でやっていたんですが、
何回もやっても、どうしてもエラーが出てしまうので、
力をお貸しいただけないかと、またきてしまった訳でして、よろしくお願いします。
{
char str[255];
int i;
printf("文字列の入力");
getchar(str);
i=0;
while(str != \0){
i++;
}
while(i>0){
printf("%c",str);
i--;
}
}
getchar(str)のところで「error C2660: 'getchar' : 関数に 1 個の引数を指定できません。」
while(str!=\0)のところで「error C2017: エスケープシーケンスの使い方が正しくありません。」
となってしまいます。
なぜでしょうか。
Re:宿題をやっておりまして・・・・・。2
Posted: 2009年1月02日(金) 19:16
by non
>
> {
> char str[255];
> int i;
>
> printf("文字列の入力");
> getchar(str);
getcharは1文字を入力します。文字列を入力するなら、gets(str)です。
> i=0;
> while(str != \0){
文字を表すには、'\0'のようにシングルクォーテーションで囲みます。
ただ、strはアドレスになりますから、
while(str!='\0')と書きます。
> i++;
> }
> while(i>0){
> printf("%c",str);
> i--;
> }
> }
>
> getchar(str)のところで「error C2660: 'getchar' : 関数に 1 個の引数を指定できません。」
>
> while(str!=\0)のところで「error C2017: エスケープシーケンスの使い方が正しくありません。」
>
> となってしまいます。
> なぜでしょうか。
>
Re:宿題をやっておりまして・・・・・。2
Posted: 2009年1月02日(金) 19:30
by dic
getchar はファイルへのポインタを指定します
\0 ではエスケープシーケンスとして認識できません
'\\0' と指定しましょう
ファイルからの入力か
キーボードからの入力か分かりませんが
孫 さん予想した動きをするものを作ってみました
#include <string.h>
int _tmain(int argc, _TCHAR* argv[/url])
{
char str[255];
int i;
printf("文字列の入力");
scanf( "%s", str );
// getchar(str);
i=0;
// while(str != '\\0'){
// i++;
// }
i = strlen( str ) - 1;
while(i>=0){
printf("%c",str[i--]);
// i--;
}
return 0;
}
参考になれば幸いです
Re:宿題をやっておりまして・・・・・。2
Posted: 2009年1月02日(金) 19:32
by BEMANI
>>getchar(str);
getchar()には引数を指定できませんので「関数に1個の引数を指定できません。」と出ます。
getcharは1文字ですので、文字列を入れたいのであれば gets(str)になります。
>>while(str != \0){
>> i++;
>>}
文字列の比較をやっているここですが、
エスケープシークエンス(\0)にシングルクォーテーションが入っていないためエラーになります。
書くのであれば while(str != '\0') と書きましょう。
あと、このwhile文では永久ループになってしまいます。
「str」に格納した文字が最後でないなら i++(文字数をカウント) としていますが、
このままだと、「i」が増えるだけで「str」は「\0」にならず、ループから抜けないないです。
書くのであれば while(str != '\0')です。
「i」は1→2→3・・・と増えていき、'\0'が来たら抜けます。
最後のwhileで画面に出力されていますが、
このままだと入力した文字が逆に出力されますが大丈夫でしょうか?
「i」は5→4→3・・・と減っていくので、abcdと入力すると「dcb」と表示されます。
逆に表示するという宿題であれば問題ないです。
また、while(i>0) としているので、配列の0番目の要素(最初に入力した文字)は表示されません。
Re:宿題をやっておりまして・・・・・。2
Posted: 2009年1月02日(金) 20:04
by 孫
親切にどうもありがとうございます。
喉につっかえたものが取れました。