자료형 pair를 배열 형태로 선언할 수 있는지 여부 & txt 파일 입력

조회수 553회

자표가 저장된 txt 파일을 입력 받아. 점을 pair 자료구조에 저장하고 싶습니다. 그런데 이 과정에서 실행 에러가 발생해서 질문 올려봐요 !!

#include<stdio.h>
#include<iostream>
#include<utility>

using namespace std;

int main()
{
    FILE *sample;
    pair<float, float> point[100];

    char file_name[10];
    int i;

    printf("실행을 위해 불러들일 sample 파일 이름을 입력하세요.(txt까지 입력) : ");
    scanf("%s", file_name);
    sample = fopen(file_name, "r");

    for (i = 0; ; i++)
    {
        if (fscanf(sample, "%f%f", &point[i].first, &point[i].second) != 2) break;
        printf("%f  %f \n", point[i].first, point[i].second);
    }

    fclose(sample);

    return 0;
}

제가 그런데 visual studio에서 실행시키면 자꾸 오류가 나더라고요 ㅜㅠㅜㅠ 이미지

(1) 제 생각엔 문자열로 sample 파일의 이름을 입력받고, fopen함수를 쓸 때, 저렇게 fopen(file_name, "r");로 써는 부분에서 어떤 문제가 있을 것 같아요....

(2) pair <float, float> point[100]; 부분도 약간의 궁금점이 있습니다. 인터넷에서 찾아보니까 vector와 pair를 함께 쓰는 경우도 있던데, 저는 sorting을 할 게 아니라 이렇게 배열 형태로 써도 어떤 에러의 원인이 될지 모르겠네요...(저는 단순히 점을 입력받고 그 점을 전체 탐색할 예정입니다!) 아무리 찾아봐도 이렇게 pair를 배열로 쓴 코드는 본 적이 없어서 말예요 ㅜㅠ; 보통 프로그래머 분들은 점을 입력 받을 때, 어떤 방식으로 입력받으시나요??? (물론 float x[100], y[100]로 간단하게 코드를 짜는 방식도 있겠지만 저는 이번에 pair 자료형을 한번 써보고 싶어요 ㅎㅎ)

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • (1) 파일 이름이 10글자 넘는거 같은데요. doodoji 2018.10.26 16:50
  • (2) 글쎄요 필요에 따라 다르지 않을까요? 보통 pair 보다는 Point 클래스나 구조체를 직접 만들어서 쓰긴 하는데... 각 어플리케이션마다 요구사항이 다르기 때문에 뭐라고 정의하기 힘드네요. 배열 보다는 벡터를 쓰면 뭐 여러모로 편리하죠. 각종 유틸 메소드 + 동적으로 벡터 사이즈를 키울 수도 있고, 이터레이션도 편하고. 속도도 준수한 것으로 알고 있습니다. doodoji 2018.10.26 17:01
  • 앗 digda 님께서 답변해주셔서 (1)은 해결이 되었어요!! 감사합니다.^^ 알 수 없는 사용자 2018.10.26 17:56

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)