
配列bの代わりに,必要最低限の領域を確保して、確保した領域cに文字列をコピーする。
また、"Hello World!"とは文字数の異なる文字列に対しても動作するように、 下のコードを書き換えるにはどのようにすればいいのでしょうか?
#include<stdio.h>
int main(void){
char *a="Hello World!";
char b[20];
int i;
printf("Original string:\"%s\"\n", a);
for(i=0;a[i]!='\0';i++){
b[i]=a[i];
}
b[i]='\0';
printf("Copied char array:\"%s\"\n", b);
return 0;
}
No.1ベストアンサー
- 回答日時:
/* 配列bの代わりに,必要最低限の領域を確保して、確保した領域cに文字列をコピーする。
*/#include<stdio.h>
#include <stdlib.h>
int main(void){
char *a="Hello World!";
char *c=malloc(sizeof(char) * 13);
int i;
printf("Original string:\"%s\"\n", a);
for(i=0;a[i]!='\0';i++){
c[i]=a[i];
}
c[i]='\0';
printf("Copied char array:\"%s\"\n", c);
free(c);
return 0;
}
/* "Hello World!"とは文字数の異なる文字列に対しても動作するように、 下のコードを書き換える */
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char *a = "Fuck the World!";
int i;
int count = 0;
printf("Original string:\"%s\"\n", a);
for (i = 0; a[i] != '\0'; i++) {
count++;
}
char *p = malloc(sizeof(char) * (count + 1));
for (i = 0; a[i] != '\0'; i++) {
p[i] = a[i];
}
p[i] = '\0';
printf("Copied char array:\"%s\"\n", p);
return EXIT_SUCCESS;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
人気Q&Aランキング
-
4
C言語のfor文です。 繰り返しの...
-
5
数字文字の出現回数を表示する...
-
6
【C言語】テキストファイル内の...
-
7
charでの計算?
-
8
C言語のポインターで詰まっている
-
9
sprintfに同じ変数は使えるか
-
10
アルファベットの並べ替え
-
11
C言語です
-
12
配列をnビットシフトする
-
13
charからLPTSTRへの変換方法
-
14
4バイトでのサムチェックコー...
-
15
c++ 文字列を入力して、一文字...
-
16
int main()の・・・
-
17
C言語の入力した文字を反転させ...
-
18
C言語について コマンドライン...
-
19
文字列から空白を取り除きたい...
-
20
YUV⇔RGB変換がうまくいきません。
おすすめ情報
公式facebook
公式twitter