#include<stdio.h>
int fcount(char ch, char *a){
if(*a == '\n'){
printf("d");
return 0;
}
else
if(*a == ch){
printf("b");
return 1 + fcount(ch, a++);
}
else
if(*a!=ch){
return fcount(ch, a++);
}
}
int main(){
char *s;
int c = 0, i;
printf("Enter anything you wish\n");
scanf(" %[^\n]s",s);
for(i = 97; i <= 122; i++){
c = fcount(i, s);
if(c != 0)
printf("[%c] %d\n", i, c);
}
}
これは、テキスト の与えられたラインで各文字の頻度をカウントするために私のロジックである。しかし予想出力以下のプログラムでセグメンテーションフォールトを回避するにはどうすればよいですか?
を表示するように見えるdoesntのプログラムは、私が取得すると、このです:セグメンテーションフォールト(コアダンプ) アドバイスをお願いします!
'char * s;'はメモリ割り当てがありません。初期化されていないポインタです。 'chars [1024];を提案し、' scanf'で入力長を制限してください。 –
'char s [100];'と 'scanf("%99 [^ \ n] "、s);'は書式指定子に 's'は必要ないことに注意してください。 –
脇に:(i = 'a'; i <= 'z'; i ++) '(連続したエンコーディングを仮定していますが、通常は*です)。 –