input関数で入力された配列の値をmain関数で表示させたいのですが、コアダンプ(セグメンテーション違反)でうまくいきません。
input関数のreturnで配列の先頭アドレスがmainに渡され、main関数で表示させようとしています。なぜ意図した通りに動かないのでしょうか?
C
1#include <stdio.h> 2#include <string.h> 3 4#define MAXDATA 255 5#define DATA 3 6 7char* input(void); 8 9int main(void) { 10 char *xy[DATA] = { }; 11 12 *xy = input(); 13 printf("座標:%s\n", *xy); 14 15 return 0; 16} 17 18char* input(void) { 19 char in_xy[DATA] = { }; 20 21 // A1などを入力(正しく入力されると仮定) 22 printf(">>"); 23 fgets(in_xy, MAXDATA, stdin); 24 25 // 配列の最後を¥0に変更 26 in_xy[strlen(in_xy) - 1] = '\n'; 27 28 return in_xy; 29 30} 31 32```![イメージ説明](e1dd5e84ee101c82228249d81e7e0025.png)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/04 06:27
2020/08/04 06:42
2020/08/04 08:38