各文字列の出現回数を数えるプログラムを作成しているのですが、セグメッションフォルトが出ました。
どこがおかしいのか教えてください。C言語始めたばかりです。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct cell{
struct cell *next;
char *word;
int count;
}CELL;
int main(int argc,char **argv){
count_word();
return(0);
}
struct cell *list = NULL;
void count_word(char *word){
CELL *p;
for(p=list;p!=NULL;p=p->next){
if(strcmp(word,p->word)==0){
p->count++;
return;
}
}
p=(struct cell*)malloc(sizeof(struct cell));
p->word=(char*)malloc(strlen(word)+1);
strcpy(p->word,word);
p->count=1;
p->next=list;
list=p;
printf("%s:%d\n",p->word,p->count);
}
C言語についての質問です
Re: C言語についての質問です
ソースコードを掲示する際は、BBCodeを有効にした(無効にしない)状態でcodeタグで囲んでいただけると、見やすくてありがたいです。
(main関数以外の)関数は呼び出す所より前で定義またはプロトタイプ宣言をすることをおすすめします。
とりあえず言えるのは、count_word関数は引数を1個取るはずなのに、main関数で引数を全く指定せずに呼び出しているのはおかしいですね。アレセイア さんが書きました:どこがおかしいのか教えてください。
(main関数以外の)関数は呼び出す所より前で定義またはプロトタイプ宣言をすることをおすすめします。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)