プロが教えるわが家の防犯対策術!

次のプログラムを書き換えて文字列aと文字列bが結合された文字列pを設定して画面表示するにはどのようにすればいいでしょうか?
#include<stdio.h>
#include<stdlib.h>

int main(void){
char *a="Hello";
char *b=" World!";
char *p;
/***必要な変数を宣言***/

printf("Original string:%s\n", a);
printf("another string:%s\n", b);
/***aの文字数計算***/
/***bの文字数計算***/
/***(a+b+1)文字分の領域を確保して先頭アドレスをpに代入***/
/***pにaをコピー***/
/***pにbを追加***/
/***pに終端文字を追加***/
printf("Concatenated string:%s\n", p);
free(p);/***pを解放***/
return 0;
}

教えて!goo グレード

A 回答 (1件)

#include<stdio.h>


#include<stdlib.h>

int main(void){
 char *a="Hello";
 char *b=" World!";
 char *p;
 /***必要な変数を宣言***/
 int len_a = 0, len_b = 0;

 printf("Original string:%s\n", a);
 printf("another string:%s\n", b);
 /***aの文字数計算***/
 for (int i = 0; a[i] != '\0'; i++) {
  len_a++;
 }
 /***bの文字数計算***/
 for (int i = 0; b[i] != '\0'; i++) {
  len_b++;
 }
 printf("%d %d\n", len_a, len_b);
 /***(a+b+1)文字分の領域を確保して先頭アドレスをpに代入***/
 p = malloc(sizeof(char) * (len_a + len_b + 1));
 /***pにaをコピー***/
 for (int i = 0; i < len_a; i++) {
  p[i] = a[i];
 }
 /***pにbを追加***/
 for (int i = 0; i < len_b; i++) {
  p[i + len_a] = b[i];
 }
 /***pに終端文字を追加***/
 p[len_a + len_b] = '\0';
 printf("Concatenated string:%s\n", p);
 free(p);/***pを解放***/
 return 0;
}
    • good
    • 0

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

教えて!goo グレード

人気Q&Aランキング