いま、コマンドラインからの入力という問題に挑戦中なのですが、ダブルポインタなどがでてきてしまい、作業が途中で止まってしまっています。
教えてくださいm(>_<)m
***
コマンドラインから入力された文字列に小文字のアルファベットが含まれていれば、すべて大文字に変え、文字列を昇順に並べ替えて表示させましょう。
パラメータ文字列が2つ以上入力されなければエラーメッセージを表示して終了させること。
>>sample Ichi
と入力した場合
Usage : STR1 STR2 [STR3 ... ]
>>sample matsuki harada
と入力した場合
** Str data **
matsuki
harada
** Changed str **
HARADA
MATSUKI
>>sample no3 no2 no1
と入力した場合
** Str data **
no3
no2
no1
** Changed str **
NO1
NO2
NO3
というように実行させたいのですが、ソートと大文字への変換がうまくできません。
#include<stdio.h> int main(int argc, char *argv[/url]) { int i; if(argc < 2) { printf("\nUsage %s STR1 STR2 [STR3 ... ]\n",argv[0]); return 1; } printf("\n** Str data **"); for(i = 1; i < argc; ++i) { printf("\n%s",argv); } printf("\n\n"); void change(int, char **); void sort(int, char **); printf("** Changed str **"); for(i = 1; i < argc; ++i) { printf("\n%s",argv); } printf("\n"); return 0; } void change(int cnt, char **pp) { int i; char *p; for(i = 1; i < cnt; i ++) { for(p = pp; *p !='\0'; p++) { if((*p>='a')&&(*p<='z')) { *p = *p - 'a' + 'A'; } } } } void sort(int cnt, char **pp) { int i; int j; int k; char *p; for(i = 0; i < cnt-1; i++) { for(j = cnt-1; 1 + i < j; j--) { for(k = 0; pp[j][k] == pp[j-1][k]; k ++); { if(pp[j][k] < pp[j-1][k]) { p = pp[j]; pp[j] = pp[j-1]; pp[j-1] = p; } } } } }
***
いまのところ作ってみているのが上記のものです。
void change(int, char **);
void sort(int, char **);
の部分が間違っているのだろうとは思うのですが・・・どうでしょうか?
ソートと変換の部分もかなり怪しいですが;
<!--12-->