プロが教える店舗&オフィスのセキュリティ対策術

下記のプログラムですが、mainで、
char *f(char *, char *);
を宣言して、mystrcatをfで記述して動かすことってできますか?

#include <stdio.h>
#include <string.h>

char *mystrcat(char *a, char *b)
{
char *ptr;
int n = 0;

ptr = a + strlen(a);

while((*(ptr+n) = *(b+n)) != '\0') {
n++;
}

return a;
}

int main(int argc, const char * argv[]) {
// insert code here...
char str1[16] = "abc";
char *str2 = "def";

printf("%s\n", mystrcat(str1, str2));

return 0;
}

質問者からの補足コメント

  • mystrcatという変数で記述しているものを、宣言したfという変数を用いて記述できないか?
    ということです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/02/04 18:52

A 回答 (3件)

#include <stdio.h>


#include <string.h>
#include <stdlib.h>

char *mystrcat(char *a, char *b) {
 char *ptr = a + strlen(a);
 int n = 0;
 while ((*(ptr + n) = *(b + n)) != '\0') {
  n++;
 }
 return a;
}

int main(int argc, const char* argv[]) {
 char* (*f)(char*, char*) = mystrcat;
 char str1[16] = "abc";
 char *str2 = "def";
 printf("%s\n", f(str1, str2));
 return EXIT_SUCCESS;
}
    • good
    • 0
この回答へのお礼

なるほど、fを
f is a pointer to function returning a pointer to char
として宣言して、
f = mystrcat
とすれば良いということなのですね。

お礼日時:2022/02/04 20:01

> なるほど、fを


> f is a pointer to function returning a pointer to char
> として宣言して、
> f = mystrcat
> とすれば良いということなのですね。

そうですね。
前橋和弥氏風に言うと、そうなります。
    • good
    • 0

「mainで、


char *f(char *, char *);
を宣言して」
の部分については可能だけど, そのあとの「mystrcatをfで記述して動かす」は「何をしたいのか」がさっぱり読み取れない. 特に「fで記述して」の部分はまったく意味が分からない. 「f という言語で記述する」ということ?
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!