|
よろしくお願い致します。
サイトを検索してintやcharの場合は引数にアドレスを指定して
関数側でそのアドレスに値を入れて返すことはできました。
しかし文字列を返すことができないのです。
呼び出し側で配列やポインタ変数を使って文字列のメモリ領域を作成しているつもりですが、呼び出された側でその値に書き込んで(上書きして)返すことはできないのでしょうか?ポインタの場合は宣言しただけでは領域が確保されないとあったので初期化してからやっておりますが、書き換わりません。
ソースは以下です。よろしくお願いいたします。
#include <stdio.h>
#include <string.h>
int hello(char *moji, char *ans)
{
char *s = "ab";
printf("Res: %s\n",moji);
printf("1: %s\n",ans);
if (strcmp(moji , s) == 0)
{
//*ans = 'Y'; //char
//strcpy(ans,"OK");
//ans = '\0';
ans = "OK";
printf("2: %s\n",p);
return 0;
}
else{
//*ans = 'N';
*ans = "NG";
printf("2: %s\n",*ans);
return -1;
}
}
int main()
{
char moji[100];
char *p;
int p1;
//char p2 = 't';
int rc;
char *p3 = "tt";
//char p3[] = "tt";
printf("word=");
scanf("%s",moji);
p = moji;
//rc=hello(p, &p1); //int
//rc=hello(p, &p2); //char
rc=hello(p, p3);
if (rc == -1){
printf("%s\n",p3);
}
else{
printf("%s\n",p3);
}
return 0;
}
|