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

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

ただいまの
回答率

87.95%

C言語でコンパイルエラー【「identifier」を付け忘れています。】

解決済

回答 6

投稿

  • 評価
  • クリップ 0
  • VIEW 5,810

score 7

前提・実現したいこと

コードを書いた後コンパイルしたらエラーが出ました。 
何度も見なおして直したつもりですがエラーが消えません

※学習用C言語開発環境を使用させていただいています。

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

エラーメッセージ
「12行目」で記述エラーを発見しました。
「identifier」を付け忘れています。

{や;の抜けや識別子のつけ忘れといった所も何度も見なおしているのですが、なぜエラーなのかがわかりません。。 
よろしくお願いします。

該当のソースコード

include<stdio.h>

int count_u(char *);
void main(void)
{
char school[]="NIIZASOUGOUGIJUTSUKOUTOUGAKKOU";
printf("SCHOOL  :%s\n",school);
printf("COUNT_U :%s\n",count_u(school));
printf("SCHOOL  :%s\n",school);
}
int count_u(char )
{
int i=0,u;
char *p;
p=name;

while(i!=NULL){
if(strstr(p[i],"U")!=NULL){
u++;
}
*(p+i) = ('*');
}
return u;
}

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 6

checkベストアンサー

+1

プロトタイプの方では
int count_u(char *);

となっているのに、

定義部では
int count_u(char){...

となっている。( 引数が char* か char か。 )

また、定義部では、

int count_u( char *a ){...

のように 変数名が必要。

また、char とすると char型変数 ( 半角英数字一文字分 ) 、
char* とすると char型配列 ( char型変数の連なり。 文字列。一文字"以上"。 )

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

int count_u(char ) 

int i=0,u; 
char *p; 
p=name;

引数の名前がないこととnameという変数が定義されていません。ついでにプロトタイプ宣言と型が違います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

int count_u(char ??)・・・パラメタは?
たぶん・・・int count_u(char *name)

while(i!=NULL){
if(strstr(p[i],"U")!=NULL){
u++;
}
*(p+i) = ('*');
}
は
while(p[i]!='\0'){
    if(p[i]=='U'){
        u++;
    }
    *(p+i) = ('*'); // 全部*にするのでしょうか?
    i++;
}


だと思いますが・・・他にもいろいろあります、頑張ってくださいv^^

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

int count_u(char )
{

の部分が

int count_u(char* name)
{

となります。

あと、

printf("COUNT_U :%s\n",count_u(school)); 
printf("COUNT_U :%d\n",count_u(school)); 

です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

こんにちは。

コンパイル・エラーについてはすでに回答がたくさんついてますので、それ以外に気がついたことを書きます。

while(i!=NULL){


のループは意図通りに動かないだろうと思います。
int i=0;と初期化しているので、ループ継続条件が成立せず直ぐに終了し、戻り値は常に0となる筈です。
また、逆にwhile(i == 0)とすると、iをインクリメントしていないので無限ループになります。
C言語の文字列は0終端ですので、着目している文字が0かどうかをループ継続条件にすると良い筈です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

-1

まずそのコードではそもそも走らないのでその辺は端折っている?のか明確にして頂きたいです。
コードに落とし込む前に``` で囲ってコードを見やすくすることをお勧めします。 私の環境ではいただいたコード

最初からエラーでした。

頂いたコードのエラー

エラーを取り除いた状態のものも下記に記載しておきます。

#include<stdio.h>  

/* プロトタイプ宣言 */  
int count_u(char *);   

int main(void) {  
char school[]="NIIZASOUGOUGIJUTSUKOUTOUGAKKOU";   
printf("SCHOOL  :%s\n",school);   
printf("COUNT_U :%s\n",count_u(school));   
printf("SCHOOL  :%s\n",school);   
}   

int count_u(char *name )  
{   
int i=0,u;   
char *p;   
p=name;  
while(i!=NULL){   
if(strstr(p[i],"U")!=NULL){   
u++;   
}   
*(p+i) = ('*');   
}   
return u;   
}

結果はどうなればいいということはわかりませんが
エラーが出力されていたのは(潜在的に数多く出ていたと思いますが。)
引数で渡す予定のCharのpointerの変数を記載していなかったのが原因と思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 87.95%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る