何がおかしいのか・・・

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

何がおかしいのか・・・

#1

投稿記事 by びす » 18年前

コマンドライン引数の各々の文字列中の文字で、アルファベットの小文字を大文字に、大文字を小文字に変換して表示するプログラムを作成せよ。

のプログラムを作成しているのですが・・・

#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

となり意味がわからないです・・・
どなたか教えていただけると幸いです。

box

Re:何がおかしいのか・・・

#2

投稿記事 by box » 18年前

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:何がおかしいのか・・・

#3

投稿記事 by 管理人 » 18年前

void encrypt(char *argv);

これは宣言する時の文であり、関数を呼ぶときの文ではありません。
呼ぶ先の関数が2次元配列の先頭アドレスを受け取る形でしたら

encrypt(argv);

このように2次元配列の先頭アドレスを渡す形で呼んでやりましょう。

びす

Re:何がおかしいのか・・・

#4

投稿記事 by びす » 18年前

本当にどうもありがとうございました!

理解できるように努めます。

お早い回答本当にありがとうございました!

閉鎖

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