c言語
1 2#include <stdio.h> 3#include <string.h> 4 5#define MAX_SIZE 10 6#define L_COUNT 5 7 8 9void func(char *c_buf,char **tag,char **last_char){ 10 int i; 11 12 tag[0] =c_buf; 13 for(i=0;i<L_COUNT;i++){ 14 if(fgets(tag[i],MAX_SIZE,stdin)== NULL){ 15 *tag[i]='\0'; 16 tag[i+1]=tag[i]+1; 17 18 } 19 20 else{ 21 *last_char=tag[i]+strlen(tag[i])-1; 22 if((**last_char=='\n')){ 23 *last_char='\0'; 24 tag[i+1]=*last_char+1; 25 // printf("-------\n"); 26 } 27 else{ 28 int get_data; 29 do{ 30 get_data=getchar(); 31 }while(!((get_data=='\n')||(get_data==EOF))); 32 tag[i+1]=*last_char+2; 33 } 34 } 35 } 36 37} 38 39void func2(char **tag){ 40 41 int i,j; 42 char *swap_buf; 43 44 for(i=0;i<L_COUNT;i++){ 45 printf("%d : %s\n",i,tag[i]); 46 } 47 48 for(i=0;i<(L_COUNT-1);i++){ 49 for(j=L_COUNT-1;j>i;j--){ 50 if(strncmp(tag[j-1],tag[j],MAX_SIZE-1)>0){ 51 swap_buf=tag[j]; 52 tag[j]=tag[j-1]; 53 tag[j-1]=swap_buf; 54 } 55 } 56 } 57 58 printf("\n\n"); 59 for(i=0;i<L_COUNT;i++){ 60 printf("%d:%s\n",i,tag[i]); 61 } 62} 63 64 65int main(){ 66 int i; 67 char c_buf[L_COUNT *MAX_SIZE]; 68 char *tag[L_COUNT +1], *last_char; 69 70 func(c_buf,tag,&last_char); 71 func2(tag); 72 73 74} 75 76
5つの文字列を入力してその文字列をアルファベット順に並び替えるプログラムを書いているのですが、コンパイルはできたのですが実行をしようとするとセグメンテーションエラーが出てしまいます。
関数funcで文字列を入力して、関数func2で文字列を並び替えています。
実行する際
blue
red
と2つ目の文字列を入力した後にセグメンテーションエラーが起きます。他の文字列でも同じでした。
どこが悪いのかわからないので分かる方教えていただきたいです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。