// 反転
#include <stdio.h>
#include <string.h>
void strreverse(char *);
int main(void)
{
char str[32];
printf("文字を入力してください--->");
gets(str);
strreverse(&str);// 文字列をひっくり返す関数
printf("反転した文字は----------->%s\n",str);
return 0;
}
/*---------------------------------------------------------------------*/
void strreverse(char *s[])
{
int i,length;
char temp[32];
strcpy(temp,*s);
length = strlen(temp);
for(i=0;i<length;i++) {
*s = temp[length-i-1];
}
*s = '\0';
}
以上のようにして入力された文字列をstrreverse内で
ひっくり返したものを表示するプログラムを作成して
いるのですが、
c:\VC++_WORKS\kadai8\kadai8.cpp(13): error C2664: 'strreverse' : 1 番目の引数を 'char (*__w64 )[32]' から 'char *' に変換できません。
c:\VC++_WORKS\kadai8\kadai8.cpp(27): warning C4267: '=' : 'size_t' から 'int' に変換しました。データが失われているかもしれません。
となってしまいます。char *変換させる方法ありますか?
関数の引数をポインタ変数で与えたい
ActiveBasicの掲示板で聞くとは,中々の度胸を持っていると見受けられられます。
どうせよその掲示板でも質問しているのでしょうけど。 [ここをクリックすると内容が表示されます]
strreverseの中身はこうで十分です。呼ぶ側はstrreverse(str);として先頭要素へのポインタを渡します。
strreverse(&str);の形で呼びたければ、void strreverse(char (*s)[32])とでもしてください。
もっともわざわざ配列へのポインタを渡す必要はありませんが。
strreverse(&str);の形で呼びたければ、void strreverse(char (*s)[32])とでもしてください。
コード: 全て選択
void strreverse(char *s)
{
int i, length;
char temp[32];
strcpy(temp, s);
length = strlen(temp);
for (i = 0; i < length; i++) {
s = temp[length-i-1];
}
s = '\0';
}
もっともわざわざ配列へのポインタを渡す必要はありませんが。
Re: 関数の引数をポインタ変数で与えたい
> // 反転
> #include <stdio.h>
> #include <string.h>
このインクルードで何言語かわかりました...
し、C(or C++)言語??
な、なぜ、ここで??
> #include <stdio.h>
> #include <string.h>
このインクルードで何言語かわかりました...
し、C(or C++)言語??
な、なぜ、ここで??