• ベストアンサー

次のプログラミングが上手くいきません

このプログラムを実行するとセグメンテーション違反が出てきて上手くできません… #include<stdio.h> #include<stdlib.h> int search_letter( char *str, char letter); int main(void){ int cnt; char in[100]; char ch; printf("Input a string: "); gets(in); printf("Input a letter: "); scanf("%c", &ch); cnt = search_letter( in, ch); printf("The number of letter '%c' is %d\n", ch, cnt ); return 0; } int search_letter( char *str, char letter) { char *p; int n; n=0; p=str; while(p != NULL){ if(letter == *p) n++; p++; } return n; } 実行結果が以下のようにならなければいけないのですが… ./pz1-2 Input a string: Mousukkari akidesune Input a letter: o The number of letter 'o' is 1 *"./pz1-2"と"Mousukkari akidesune"はキーボードから入力した文字です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

"while(p != NULL)"は、"while(*p)"または、"while(*p != '\0')"。  "NULL"と"\0"は、意味が違うのでちゃんと区別すること。  

その他の回答 (1)

  • kent_a
  • ベストアンサー率18% (36/199)
回答No.1

while(p != NULL){ ここが while(*p != NULL){ では? このwhile文は文字列の終端を判断するもののはずです。 if(letter == *p) って記述しているように 文字は何ってことですね

関連するQ&A