
配列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ランキング
-
ncursesで...
-
charからLPTSTRへの変換方法
-
'const char *' 型は 'char *' ...
-
CStringをwchar_tに変換したい
-
ftoa の作り方
-
strncpyと_tcsncpy_sのヌルの扱...
-
PING JPEGファイルのExif規格の...
-
c#でbmp画像の上下反転
-
構造体のアライメント調整
-
間接参照のレベルが異なっています
-
C言語のfor文です。 繰り返しの...
-
WORDをcharに変換する方法
-
c言語プログラミング実行時エラ...
-
int main()の・・・
-
fgetsなどのときのstdinのバッ...
-
pingの結果を取得する方法
-
ソケット通信で大容量のメール...
-
文字型変換
-
VB6のAscB関数をC++で書き換えたい
-
C言語、リダイレクト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
C言語のfor文です。 繰り返しの...
-
文字列から空白を取り除きたい...
-
テキストデータをそのままバイ...
-
2曲同時再生するにはどうした...
-
配列をnビットシフトする
-
CStringをwchar_tに変換したい
-
c++ 文字列を入力して、一文字...
-
charからLPTSTRへの変換方法
-
atoi( ) の反対をやりたい
-
間接参照のレベルが異なっています
-
charでの計算?
-
c言語プログラミング実行時エラ...
-
double型の値をchar配列に変換...
-
str系関数を使わずに二つの文字...
-
間接操作のレベルとは
-
3桁区切(コンマ)記号をつけ...
-
iconv_open失敗
-
【C言語】構造体内の領域解放(...
-
ftoa の作り方
おすすめ情報