ポインタ型配列をポインタを使って表示する

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ガムテープ

ポインタ型配列をポインタを使って表示する

#1

投稿記事 by ガムテープ » 14年前

文字列を降順で並び替えるプログラムを作りたいのですが、入れ替えの方法がわかりません。
ワークエリアを使って、並べ替えようとしたのですが、一つ先のアドレスを指定する方法がわから
ず、悩んでいます。

アドバイスお願いします。

コード:

#include<stdio.h>
	main()
{
	char *p_data[]={"Programming1","Algorithm","Programming2","C"},*pd;
	int i=0;
	char **p;

	p = p_data;

	while(i<4){
		while(**p){
			if(**p<**(p+1)){
				pd=**p; 
				**p=**(p+1);
				**(p+1)=pd;
			}
			printf("%c",**p);
			(*p)++;
		}
		printf("\n");
		i++;
		p++;
	}
}

box
記事: 2002
登録日時: 15年前

Re: ポインタ型配列をポインタを使って表示する

#2

投稿記事 by box » 14年前

ガムテープ さんが書きました:文字列を降順で並び替えるプログラム

コード:

	char *p_data[]={"Programming1","Algorithm","Programming2","C"},*pd;
どういう結果を得たいのでしょうか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

ガムテープ

Re: ポインタ型配列をポインタを使って表示する

#3

投稿記事 by ガムテープ » 14年前

Programming1
Programming2
C
Algorithm

です。

naohiro19
記事: 256
登録日時: 15年前
住所: 愛知県

Re: ポインタ型配列をポインタを使って表示する

#4

投稿記事 by naohiro19 » 14年前

Visual Studio 2010でのコンパイル結果

コード:

13 : warning C4047: '=' : 間接参照のレベルが 'char *' と 'char' で異なっています。
15 : warning C4047: '=' : 間接参照のレベルが 'char' と 'char *' で異なっています。
MinGWのgccでのコンパイル結果

コード:

In function 'main'
19: warning: assignment makes pointer from integer without a cast
24: warning: assignment makes pointer from pinter without a cast
示されたプログラムに問題があるため実行時に動作停止を引き起こしているようです。

box
記事: 2002
登録日時: 15年前

Re: ポインタ型配列をポインタを使って表示する

#5

投稿記事 by box » 14年前

ガムテープ さんが書きました: Programming1
Programming2
本当にそういう結果を得たいのですか?逆ではなくて、ですか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

ガムテープ

Re: ポインタ型配列をポインタを使って表示する

#6

投稿記事 by ガムテープ » 14年前

すいません 
逆でした

Programming2
Programming1
の順です

box
記事: 2002
登録日時: 15年前

Re: ポインタ型配列をポインタを使って表示する

#7

投稿記事 by box » 14年前

ガムテープ さんが書きました:

コード:

			printf("%c",**p);
そもそも、なにゆえ "%c" なんでしょうか。何をした結果を「1文字ずつ」出力しなければならないとお考えなのでしょうか。

Programming1
などの、「かたまり」で扱う必要はないのでしょうか。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

non
記事: 1097
登録日時: 15年前

Re: ポインタ型配列をポインタを使って表示する

#8

投稿記事 by non » 14年前

文字列の比較にはstrcmpを使います。
non

閉鎖

“C言語何でも質問掲示板” へ戻る