본문 바로가기

C언어24

fscanf 함수의 리턴값 fscanf 함수의 리턴값은 인자를 입력받은 개수나 파일이 끝나버리면 EOF를 반환한다. 이를 이용해서 while (fscanf(stream, "%d %d", &num1, &num2) != EOF) {...} 이런 코드를 작성하면 파일의 끝까지 읽을 수 있다. 2023. 4. 15.
[C언어] free(NULL)함수는 좋은 습관일까? C언어에서 동적할당을 할 때, 동적할당이 제대로 되지 않아서 NULL포인터를 반환하거나, free() 함수를 이미 호출한 뒤에 또 free() 함수를 호출할 때가 있습니다. 이럴 때 NULL포인터를 free() 함수 매개변수에 넣어도 되는지 아니면 따로 조건문을 실행해서 NULL포인터가 아니면 free() 함수를 실행해야 하는지( if (ptr != NULL) free(ptr); ) free() 함수와 다른 글들을 통해서 설명하겠습니다. free() 함수 void free(void* ptr); free() 함수는 malloc(), calloc()과 같이 동적할당된 메모리를 해제시켜 주는 함수입니다. free() 함수의 매개변수인 ptr이 이전에 동적할당받은 포인터의 값과 다른 경우에는 free() 함수의.. 2023. 3. 13.
[C언어] 백준 2562번 최댓값 이번 문제는 정해진 개수만큼 숫자를 입력받고 최댓값과 최대값이 있는 위치를 찾는 문제로 배열을 이용하면 쉽게 최댓값과 최대값이 몇 번째에 있었는지 찾을 수 있습니다. 그리고 배열 없이도 문제를 해결할 수 있는데, 어떻게 할 수 있을지 두개의 코드로 보여드리겠습니다. 문제 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다. 입력 첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다. 출력 첫째 줄에 최댓값을 출력하고, 둘째 .. 2023. 3. 5.
[C언어] 백준 1546번 평균 이번 문제는 백준 1546번 평균이라는 문제로 정수형 점수를 원하는 개수만큼 입력을 받은 뒤에 새로운 점수의 평균을 구하는 문제입니다. 이 문제의 핵심은 새로운 점수들의 평균을 만들 때 실수형으로 계산을 하기 위해서 형 변환이 필요하다는 것입니다. 문제 세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그러고 나서 모든 점수를 점수/M*100으로 고쳤다. 예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다. 세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 시험 본 과목의 개수 .. 2023. 2. 25.