• 締切済み

fputs:ファイル操作

Cを勉強している初心者です。 このソースはコンパイルは通るのですが、 エラーがでてしまいます。 いろいろと調べてみたりもしたのですが わかりませんでした。 なぜなのでしょうか? #include <stdio.h> #include <string.h> struct student{ char name[20]; }; int main(void) { struct student s[1]; int i; int j = 1; FILE *fp; strcpy(s[0].name,"taro"); strcpy(s[1].name,"jiro"); if((fp = fopen("test.txt","w+")) == NULL) { printf("ファイルを開けませんでした\n"); return (-1); } for(i=0;i<=j;i++) { fputs(s[i].name,fp); } fclose(fp); return (0); }

みんなの回答

  • 1839cc
  • ベストアンサー率54% (12/22)
回答No.1

struct student s[1]; この宣言は、配列の要素数は1つという意味です。 ですので、s[0]にアクセスするのは正しいのですが、 s[1]にアクセスしてはいけません。 つまり、以下の2行は、不正なメモリアクセスになってしまいます。 strcpy(s[1].name,"jiro"); for(i=0;i<=j;i++)

関連するQ&A