#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
struct Data {
char grade[10];
char major[20];
int code;
char name[50];
int divide;
int grades;
};
int main() {
struct Data D[40];
int i;
FILE *fp = fopen("input_data.csv", "r");
for (i = 0; i < 40; i++)
{
fscanf(fp, "%[^,], %[^,], %d, %[^,], %d, %d\n", &D[i].grade, &D[i].major, &D[i].code, &D[i].name, &D[i].divide, &D[i].grades);
}
fclose(fp);
for (i = 0; i < 40; i++)
{
printf("%s %s %d %s %d %d\n", D[i].grade, D[i].major, D[i].code, D[i].name, D[i].divide, D[i].grades);
}
return 0;
}
-------------------------------------------------------------------------------------------------
어제 질문 올린 부분에 대해서는 해답을 댓글로 받아서 잘 해결됐지만 또 모르는 것이 생겨 질문 올립니다 ㅠ
위의 코드를 실행해서 input_data의 내용을 구조체에 담아내는것이 목표인 코드입니다.
구조체 D[0]에는 각각 원하는 내용이 멤버에 잘 들어간 상태입니다만, D[1] 부터는 똥값이 출력됩니다.
fscanf 를 for문으로 반복하는 과정에서 잘못된 부분이 있는 것 같은데 정확한 이유가 궁금해 질문드립니다.
Tbps
fscanf에 개행문자 넣으면 이상하게 나오지 않나?
곧나감
개행문자가 '\n' 말씀하시는건가요? 지우고 돌려봐도 D[1] 구조체부터 똥값 출력되는건 그대로네요;;
Tbps
아님 %[^₩n]을 ₩n자리에 집어넣어봥
원본파일은 우째되어있는지 모르겠지만...
곧나감
%[^\n] 로 바꾸니까 액세스 위반이라고 나오네요 ㅠㅠ
Nowiz
원본파일 몰라서 뭐라 말할 수가 없지만 , 뒤에 스페이스 없애봐. .csv 파일의 정의상 콤마 뒤에 스페이스가 없는 게 일반적일 거 같네
Nowiz
"%[^,],%[^,],%d,%[^,],%d,%d\n"
decltype
문자열 받을때는 &안붙여도 됨.
그리고 딱히 문제는 없어보이는데 csv파일을 봐야...