文字列を複数つなげるプログラムを教えてください。
Posted: 2016年1月23日(土) 08:43
はじめての投稿です。至らないことがあるかと思いますがよろしくお願いします。
文字列を複数入力し、それをつなげ領域51バイトがうまったら『50バイト追加』と表示し、さらに領域を51バイトあける(これをループ)というプログラムを作ろうと考えています。
以下の流れで作れるとアドバイスはもらいましたがプログラムの作り方がわかりません。
今の領域のアドレスをaに入れる。
50バイト大きな新しい領域をmallocで確保し、先頭アドレスをhに入れる。
hに古い領域aの内容をコピーする。
aをfreeにする。
上の流れで教えてください。
#include<stdio.h>
int main(int argc,char *argv[]){
char *h,*k;
h=(char *)malloc(51);
printf("入力(ctrl-zで終了):\n");
k=h;
while(1){
*k=getchar();
if(*k==EOF)break;
if(*k=='\n')continue;
if(k==h+50){
printf("50バイト追加\n");
return 1;
}
k=k+1;
}
*k='\0';
printf("出力:\n");
for(k=h;*k!='\0';k++){
putchar(*k);
}
printf("\n");
free(h);
return 0;
}
以下の流れで作れるとアドバイスはもらいましたがプログラムの作り方がわかりません。
今の領域のアドレスをaに入れる。
50バイト大きな新しい領域をmallocで確保し、先頭アドレスをhに入れる。
hに古い領域aの内容をコピーする。
aをfreeにする。
上の流れで教えてください。