#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
int key;
char name[20];
int grade;
}element;
void p1();
void insert(element e, element a[], int i);
void insertionSort(element a[], int n);
int main() {
p1();
return 0;
}
void p1() {
FILE* f = fopen("input.txt", "r");
if (!f) {
fprintf(stderr, "file doesn't exist\n");
exit(EXIT_FAILURE);
}
int n; element* e;
fscanf(f, "%d", &n);
e = (element*)malloc(sizeof(element)*(n + 1));
char name[20];
printf("<<<<<<<<<< Input List >>>>>>>>>>\n");
for (int i = 1;i <= n;i++) {
fscanf(f, "%d %s %d", &e[i].key, name, &e[i].grade);
strcpy(e[i].name, name);
printf("( %d, %s, %d )\n", e[i].key, e[i].name, e[i].grade);
}
fclose(f);
insertionSort(e, n);
printf("\n<<<<<<<<<< Sorted List >>>>>>>>>>\n");
for (int i = 1;i <= n;i++)
printf("( %d, %s, %d )\n", e[i].key, e[i].name, e[i].grade);
}
void insert(element e, element a[], int i) {
a[0] = e;
while (e.key < a[i].key) {
a[i + 1] = a[i];
i--;
}
a[i + 1] = e;
}
void insertionSort(element a[], int n) {
int j;
for (j = 2;j <= n;j++) {
element temp = a[j];
insert(temp, a, j - 1);
}
}
입력 텍스트파일은 맨윗줄에 총 몇개 element 입력받을건지 있고 그다음줄부터 7 엄준식 99 이런식으로 key name grade 필드변수 써져있는데 문자열이 디버깅해보니까 계속 문자열에 잘못된 문자가 있습니다 라고 뜨면서 글자가 깨져버리는데 왜이런것인..??
값 출력할때도 깨지냐
ㅇㅇ..깨져서나옴
프로젝트 속성에서 문자집합 멀티바이트로 해봐
확인해봣는데 이미 멀티바이트로 되잇어
메모장 인코딩 확인점.. 다른이름으로 저장해서 ansi로 저장해보셈
한글땨메 utf8로해야하는거아니야?
utf8은 한글이 3바이트라 깨지는거같거든
헐 ANSI로하니까됫어 고마워 근데이거 설명해줄수잇는..???
아 ansi에서는 1바이트로받는거야?
걍 c가 구닥다리 언어라 utf8 지원을 안함 ㅋㅋ
아..어쩐지 안되더라니 이번학기에 자바랑 같이해서 txt파일 utf로바꿔서그랫나봄 ㅠㅠ 고마워
ㅇㅇ 열씨미해
정확히 어느 상황에서 깨지는거임? 한글? 아니면 전부다?
이름이 한글인데 숫자입력은 제대로가고 name받을때만깨져
엄준식이 사람이름이 아니니까 그렇죠 ㅇㅅㅇ
아나