質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

12298閲覧

c言語のエラー invalid type argument of ‘unary *’ (have ‘int’)の解消

tamintya

総合スコア34

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/04/16 15:50

課題を行なっているのですが調べてもわからないコンパイルエラーが起こってしまいました。
課題は文字列を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; }

よろしくおねがいします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ざい<a href="https://shotblastech.com/shot-blasting-machines/shot-blasting-machines-for-pipes/shot-blasting-machines-for-pipes-internal/">shot blasting machine for pipes inside surface</a>, <a href="https://shotblastech.com/shot-blasting-machines/shot-blasting-machines-for-pipes/">shot blasting machine for pipe</a>, <a href="https://shotblastech.com/shot-blasting-machines/shot-blasting-machines-for-wire-drawing/">shot blasting machine for wire drawing</a>, <a href="https://shotblastech.com/shot-blasting-machines/shot-blasting-machine-for-wheel-rims/">shot blasting machine for car Wheel rims</a>, <a href="https://shotblastech.com/shot-blasting-machines/shot-peening-machine/">shot blasting peening machine</a>,

投稿2023/09/10 11:41

ijoll

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

str_p の型は、char ** です。
str_p[i] の型は、char * です。
*str_p[i] の型は、char です。

*str_p[i] の先頭の「単項演算子」を
ポインタではない char に適用しているからエラーになります。

output_strings(str_p, n); と書き換えましょう。

投稿2021/04/16 16:07

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tamintya

2021/04/17 01:29

理解することができました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問