변수 filename으로 파일을 열려고하면 c 프로그램이 충돌합니다.

VlassisFo

제목에서 언급했듯이 사용자에게 파일 이름을 제공하도록 요청 gets하고 str. 그런 다음 이름을 사용하여 파일에 액세스하려고하면 프로그램이 충돌합니다.

int openFile(FILE *fp){
    puts("What's the name of the file (and format) to be accessed?");
    char str[64];
    gets(str);  
    fp = fopen((const char *)str, 'r');
    ...
    return 0;

주요 내용 :

FILE *fp; // file pointer

openFile(fp);

내가 입력 한 파일 이름 (data.txt)은 실제로 프로젝트의 나머지 부분과 동일한 디렉토리에 있으므로 문제가되지 않습니다. 파일이 올바르게 열렸는지 테스트 해 보았지만 이름을 지정한 직후 계속 충돌합니다.

날 조크

그것은해야 fp = fopen(str, "r");하기 때문에, fopen()예상하는 modeA와 char *오히려 하나 이상의 문자열을 가리키는 char.

C에서 매개 변수가 있기 때문에 또한, 값에 의해 전달 , 당신의 fp의지는 이후에 수정되지 openFile()이라고합니다. 작동 시키려면 다시 작성하고으로 호출해야합니다 openFile(&fp);. 다음은 그 예입니다.

void openFile(FILE **fp) {
    puts("What's the name of the file (and format) to be accessed?");
    char str[64];
    fgets(str, 64, stdin);
    str[strcspn(str, "\n")] = '\0';  
    *fp = fopen(str, "r");
}

fgets() 버퍼 오버플로 보호를 제공하는 데 사용됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Swift iOS. 버튼 배열을 변경하려고하면 프로그램이 충돌합니다.

분류에서Dev

무작위 변수를 사용하면 C 프로그램이 충돌합니다.

분류에서Dev

"연결 프로그램"을 사용하면 C # WPF 앱이 자동으로 충돌합니다.

분류에서Dev

문자열을 대각선으로 표시하려고 할 때 C ++ 프로그램 충돌이 발생합니다.

분류에서Dev

활동에서 브로드 캐스트 수신기로 값을 전달하려고하면 응용 프로그램이 충돌합니다.

분류에서Dev

C hello world 프로그램이 변수 출력에서 충돌합니다.

분류에서Dev

목록보기에서 선택한 항목을 변경하려고하면 프로그램이 충돌합니다.

분류에서Dev

알 수없는 이유로 C ++ 프로그램이 충돌합니다.

분류에서Dev

"ORTE_ERROR_LOG : 167 행의 dpm_orte.c 파일에서 찾을 수 없음"으로 인해 OpenMPI를 사용하는 Fortran 프로그램이 충돌합니다.

분류에서Dev

간단한 C 프로그램을 AWK 프로그램으로 변환하려고합니다.

분류에서Dev

함수 목록을 포함하지 않으면 C ++ 프로그램이 컴파일되지 않습니다.

분류에서Dev

2D 배열 값을 늘리면 프로그램이 충돌합니다.

분류에서Dev

cer 파일을로드하려고하면 QSslCertificate가 충돌합니다.

분류에서Dev

Android 앱에서 글꼴을 변경하면 응용 프로그램이 충돌합니다. 기본 서체를 만들 수 없습니다.

분류에서Dev

SPOJ 생성 소수에 대한 C ++ 프로그램은 예상 출력을 제공하지만 결국 충돌합니다. 왜 그런지 알려주세요

분류에서Dev

내 C 프로그램이 실행을 마친 후 충돌합니다.

분류에서Dev

프로그램 충돌없이 존재하지 않는 변수의 값을 어떻게 확인합니까?

분류에서Dev

for 루프에서 2D 배열을 인쇄하면 프로그램이 충돌합니다.

분류에서Dev

고유 포인터를 사용하여 함수를 호출하면 내 프로그램이 충돌합니다.

분류에서Dev

파일의 정수만 문자열이있는 C ++ 프로그램으로 읽으려면 어떻게해야합니까?

분류에서Dev

파일의 정수만 문자열이있는 C ++ 프로그램으로 읽으려면 어떻게해야합니까?

분류에서Dev

c 프로그램이 파일을 제대로 읽을 수 없습니다.

분류에서Dev

C Quicksort는 다른 종류의 배열을 주문할 때 프로그램 충돌을 일으 킵니다.

분류에서Dev

이중 연결 목록에서 데이터를 인쇄하려고하면 C ++ 프로그램이 충돌합니다.

분류에서Dev

포인터 배열을 삭제하면 호출자의 응용 프로그램이 충돌합니다.

분류에서Dev

DataPoint 배열에 값을 추가하면 실행 중 응용 프로그램 충돌이 발생합니다.

분류에서Dev

람다를 함수 포인터로 변환 할 때 내 C ++ 프로그램이 충돌하는 이유

분류에서Dev

내 구조체에서 char * 유형의 요소를 특정 문자열로 설정하려고하면 C 프로그램이 충돌합니까?

분류에서Dev

C 함수 포인터가 프로그램을 충돌합니까?

Related 관련 기사

  1. 1

    Swift iOS. 버튼 배열을 변경하려고하면 프로그램이 충돌합니다.

  2. 2

    무작위 변수를 사용하면 C 프로그램이 충돌합니다.

  3. 3

    "연결 프로그램"을 사용하면 C # WPF 앱이 자동으로 충돌합니다.

  4. 4

    문자열을 대각선으로 표시하려고 할 때 C ++ 프로그램 충돌이 발생합니다.

  5. 5

    활동에서 브로드 캐스트 수신기로 값을 전달하려고하면 응용 프로그램이 충돌합니다.

  6. 6

    C hello world 프로그램이 변수 출력에서 충돌합니다.

  7. 7

    목록보기에서 선택한 항목을 변경하려고하면 프로그램이 충돌합니다.

  8. 8

    알 수없는 이유로 C ++ 프로그램이 충돌합니다.

  9. 9

    "ORTE_ERROR_LOG : 167 행의 dpm_orte.c 파일에서 찾을 수 없음"으로 인해 OpenMPI를 사용하는 Fortran 프로그램이 충돌합니다.

  10. 10

    간단한 C 프로그램을 AWK 프로그램으로 변환하려고합니다.

  11. 11

    함수 목록을 포함하지 않으면 C ++ 프로그램이 컴파일되지 않습니다.

  12. 12

    2D 배열 값을 늘리면 프로그램이 충돌합니다.

  13. 13

    cer 파일을로드하려고하면 QSslCertificate가 충돌합니다.

  14. 14

    Android 앱에서 글꼴을 변경하면 응용 프로그램이 충돌합니다. 기본 서체를 만들 수 없습니다.

  15. 15

    SPOJ 생성 소수에 대한 C ++ 프로그램은 예상 출력을 제공하지만 결국 충돌합니다. 왜 그런지 알려주세요

  16. 16

    내 C 프로그램이 실행을 마친 후 충돌합니다.

  17. 17

    프로그램 충돌없이 존재하지 않는 변수의 값을 어떻게 확인합니까?

  18. 18

    for 루프에서 2D 배열을 인쇄하면 프로그램이 충돌합니다.

  19. 19

    고유 포인터를 사용하여 함수를 호출하면 내 프로그램이 충돌합니다.

  20. 20

    파일의 정수만 문자열이있는 C ++ 프로그램으로 읽으려면 어떻게해야합니까?

  21. 21

    파일의 정수만 문자열이있는 C ++ 프로그램으로 읽으려면 어떻게해야합니까?

  22. 22

    c 프로그램이 파일을 제대로 읽을 수 없습니다.

  23. 23

    C Quicksort는 다른 종류의 배열을 주문할 때 프로그램 충돌을 일으 킵니다.

  24. 24

    이중 연결 목록에서 데이터를 인쇄하려고하면 C ++ 프로그램이 충돌합니다.

  25. 25

    포인터 배열을 삭제하면 호출자의 응용 프로그램이 충돌합니다.

  26. 26

    DataPoint 배열에 값을 추가하면 실행 중 응용 프로그램 충돌이 발생합니다.

  27. 27

    람다를 함수 포인터로 변환 할 때 내 C ++ 프로그램이 충돌하는 이유

  28. 28

    내 구조체에서 char * 유형의 요소를 특정 문자열로 설정하려고하면 C 프로그램이 충돌합니까?

  29. 29

    C 함수 포인터가 프로그램을 충돌합니까?

뜨겁다태그

보관