コマンドライン引数の各々の文字列中の文字で、アルファベットの小文字を大文字に、大文字を小文字に変換して表示するプログラムを作成せよ。
のプログラムを作成しているのですが・・・
#include <stdio.h>
#include <ctype.h>
void encrypt(char *argv[/url]);
int main( int argc, char *argv[/url] )
{
int i;
for(i=1;i<argc;i++){
void encrypt(char *argv);
}
printf("%s",argv[/url]);
return(0);
}
void encrypt(char *argv)
{
do {
if(isupper(*argv)) {
*argv =tolower(*argv);
} else
if(islower(*argv)) {
*argv = toupper(*argv) ;
}
} while(*++argv!='\0');
return;
}
エラー
重大度 記述 リソース フォルダー ロケーション
2 *** [ghk.o] Error 1 ghk
2 error: previous declaration of 'encrypt' was here ghk.c ghk 行 12
2 error: parse error before ']' token ghk.c ghk 行 15
2 error: conflicting types for 'encrypt' ghk.c ghk 行 21
となり意味がわからないです・・・
どなたか教えていただけると幸いです。
何がおかしいのか・・・
Re:何がおかしいのか・・・
encrypt関数の実行の仕方などに問題があります。
手を加えたサンプルです。
手を加えたサンプルです。
#include <stdio.h> #include <ctype.h> void encrypt(char *s); int main(int argc, char *argv[/url]) { int i; for (i = 1; i < argc; i++) { encrypt(argv); printf("%s\n", argv); } return 0; } void encrypt(char *s) { for (; *s; s++) { if (isupper(*s)) *s = tolower(*s); else if (islower(*s)) *s = toupper(*s); } }
Re:何がおかしいのか・・・
void encrypt(char *argv);
これは宣言する時の文であり、関数を呼ぶときの文ではありません。
呼ぶ先の関数が2次元配列の先頭アドレスを受け取る形でしたら
encrypt(argv);
このように2次元配列の先頭アドレスを渡す形で呼んでやりましょう。
これは宣言する時の文であり、関数を呼ぶときの文ではありません。
呼ぶ先の関数が2次元配列の先頭アドレスを受け取る形でしたら
encrypt(argv);
このように2次元配列の先頭アドレスを渡す形で呼んでやりましょう。