/*2kadai01-1.c*/
#include<stdio.h>
#include<stdlib.h>
typedef char *str;
str string(n)
int n;
/*領域の確保(定義)*/
{
str p;
p=(char *)malloc(n*sizeof(char));
if(!p) printf("領域が確保できません。終了します。");
return(p);
}
/*領域の解放(定義)*/
void freestr(p)
str p;
{
free(p);
}
main()
{
int x,n,k,l,i;
str p,q;
/*文字列の長さ入力*/
printf("文字列の長さnを入力");
scanf("%d",&n);
p=string(n);
/*文字列の入力*/
printf("注意:1文字入力する度にenterkeyを押すこと。\n");
for(x=0;x<n;x++){
printf("%d文字目は?",x+1);
scanf("%s",&p[x]);
}
printf("入力した文字列は%sです。",p);
/*k,lの入力*/
printf("\nk番目からl番目の文字列を出力します。\n");
printf("ただし、1 <= k <= l <= %dの範囲内で入力してください。\n",n);
printf("k=");
scanf("%d",&k);
printf("l=");
scanf("%d",&l);
/*k番目からl番目までの出力*/
if((1 <= k)&&(k <= l)&&(l <= n)){
q=string(l-k+1);
for(i=0;i<l-k+1;i++){
q[i]=p[i+k-1];
}
printf("%d番目から%d番目の文字列は%sです。\n",k,l,q);
/*領域の解放*/
freestr(p);
freestr(q);
}
/*1 =< k =< l =< nでなければエラー終了*/
else{
printf("条件を満たしたk,lの値ではなかったため、出力できません。");
}
}