文字列を複数つなげるプログラムを教えてください。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yu-ri

文字列を複数つなげるプログラムを教えてください。

#1

投稿記事 by yu-ri » 4年前

はじめての投稿です。至らないことがあるかと思いますがよろしくお願いします。

コード:

#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;
}
文字列を複数入力し、それをつなげ領域51バイトがうまったら『50バイト追加』と表示し、さらに領域を51バイトあける(これをループ)というプログラムを作ろうと考えています。
以下の流れで作れるとアドバイスはもらいましたがプログラムの作り方がわかりません。
今の領域のアドレスをaに入れる。
50バイト大きな新しい領域をmallocで確保し、先頭アドレスをhに入れる。
hに古い領域aの内容をコピーする。
aをfreeにする。
上の流れで教えてください。

“C言語何でも質問掲示板” へ戻る