課題を行なっているのですが調べてもわからないコンパイルエラーが起こってしまいました。
課題は文字列をn個入力しそれを入力順に表示、その後文字列を小さい順に表示すると言うものです。
発生している問題・エラーメッセージ
mondai2.c: In function ‘main’: mondai2.c:52: error: invalid type argument of ‘unary *’ (have ‘int’) mondai2.c:71: error: invalid type argument of ‘unary *’ (have ‘int’)
c言語
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LEN 100 //文字配列のサイズ(入力文字列の最大長さ+1) //文字列の画面出力用関数 void output_strings(char **array_p, int m) { int i; printf("%d" , m); for(i=0;i<m;i++){ printf("%s\n" , array_p[i]); } } int main( void ) { int i,j,t; int n; //文字列の個数 char data[MAX_LEN]={}; //入力用文字列 char **str_p; char tmp[256];//並び替え用文字列 //文字列の個数の入力 printf("文字列の個数を入力してください-<"); scanf("%d" , &n); //文字列へのポインタを格納するポインタ配列の動的確保 str_p=(char**)malloc(sizeof(char*)*n); //iii〜vの処理 for(i=0;i<n;i++){ printf("Input strings ->"); scanf("%s" , &data[i]); printf("%s\n" , &data[i]); t = strlen(&data[i]+1); str_p[i]=(char*)malloc(sizeof(char)*t); strcpy(str_p[i] , &data[i]); } //文字列の画面表示 printf("\nBefore sorting\n"); output_strings(**str_p[i],n); //文字列を長さが短い順番に並べ替え for(i=0;i<n;i++){ for(j=i+1;j<n;j++){ if(strlen(str_p[i])>strlen(str_p[j])){ strcpy(tmp,str_p[i]); strcpy(str_p[i],str_p[j]); strcpy(str_p[j],tmp); } } } //並べ変えた文字列の画面表示 printf("\nAfter sorting\n"); output_strings(**str_p[i],n); //動的確保した領域の開放 free(*str_p); return 0; }
よろしくおねがいします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。