
次のプログラムを書き換えて文字列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;
}
No.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;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
人気Q&Aランキング
-
4
int main()の・・・
-
5
fgetsなどのときのstdinのバッ...
-
6
C言語の入力した文字を反転させ...
-
7
配列をnビットシフトする
-
8
charでの計算?
-
9
4バイトでのサムチェックコー...
-
10
間接参照のレベルが異なっています
-
11
double型の値をchar配列に変換...
-
12
テキストデータをそのままバイ...
-
13
charからLPTSTRへの変換方法
-
14
3桁区切(コンマ)記号をつけ...
-
15
文字列がNULLか空文字列かの判定
-
16
C言語です
-
17
C言語のsendとrecv
-
18
【C言語】構造体内の領域解放(...
-
19
コンパイルエラー invalid ope...
-
20
atoi( ) の反対をやりたい
おすすめ情報
公式facebook
公式twitter