#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct prototype{
int rank;
char *str;
};
typedef struct prototype test;
#define SIZE 256
static int st_lim=0;
static int st_used=0;
static char *st_buffer=NULL;
int st_continue=1;
int lim_str=0;
void read_char(int ch)
{
if(st_used==st_lim)
{
st_buffer=realloc(st_buffer,(st_lim+SIZE)*sizeof(char*));
st_lim+=SIZE;
}
st_buffer[st_used++]=ch;
}
void read_line(char **str)
{
int ch=0,i,j;
for(i=0;ch!=EOF&&ch!='\n';i++)
{
st_used=0;
for(j=0;;j++)
{
ch=getchar();
if(!('0'<=ch&&ch<='9')&&ch!='\n')exit(1);
if(ch=='\n'||ch==EOF)
{
if(j==0||ch==EOF)st_continue=0;
read_char('\0');
break;
}
read_char(ch);
}
printf("#%s",st_buffer);
//strcpy(*str,st_buffer);
printf("==%s#\n",*str);
}
}
int main(void)
{
test *data,data_ad;
data=&data_ad;
read_line(&data->str);
/*char *str_n;
char str_ad;
str_n=&str_ad;
read_line(&str_n);
printf("%s",str_n);*/
return 0;
}
これまでに作ってきた関数を、今度は構造体でも使えるかな、と作成したものを構造体に使ってみたところ(?)
65~70行目の見慣れたものでならエラー無く実行できたため,構造体でもアクセスの仕方?表記の仕方?が少し違うだけだろうからいけるんだろうなぁ,とおもっていたので
59~62行目を実行したところ51行目のstrcpy関数の部分でエラーが出たらしく実行できませんでした.
なので適当な文字列をdata->strに与えたほうがよろしいかなと,65~70行目では不必要であった文字列を data->str="abc";のように61行目に挿入したところうまいこといきました
ここで,なぜ65~70行目,59~62行目にこのような差(文字列を与える必要のあるものとないもの)が出てしまったのかが疑問で仕方ありません.ご存知の方ご教授お願いいたします