.txt .csv
기본적인 요소
outFile = fopen("", ""); fclose(outFile);
반드시 fclose를 통해 파일을 닫아줘야 한다
.csv 파일 : 텍스트를 ,
로 구분
그렇기 때문에 csv파일을 통해 정보를 읽어 수행하려면
strtok
의 함수를 사용하여 문자열을 잘라줘야 한다
ex
p = strtok(문자열 변수명, ",");
" "으로 공백을 기준으로 자르기도 가능하다.
- txt to csv
#include <stdio.h>
#include <string.h>
#define MAX 10
char *name[MAX + 1][20];
int num[MAX + 1];
char *clear, *cl;
int kor[MAX + 1], eng[MAX + 1], math[MAX + 1], his[MAX + 1], mus[MAX + 1],avg[MAX + 1],rank[MAX + 1];
int sum[MAX+1] ;
char t1[10], t2[10], t3[10], t4[10], t5[10], t6[10], t7[10], t8[10], t9[10];
char test[100];
char enter[100];
char *title[MAX+1];
int a;
int cnt;
int main()
{
FILE* fp,*outFile;
outFile = fopen("out.csv", "w");
if ((fp = fopen("test.txt", "r+")) == NULL)
{
printf(" file open error");
}
if (fp != NULL)
{
fgets(enter, 100, fp);
clear = strtok(enter, " ");
title[0] = clear;
clear = strtok(NULL, " ");
title[1] = clear;
clear = strtok(NULL, " ");
title[2] = clear;
clear = strtok(NULL, " ");
title[3] = clear;
clear = strtok(NULL, " ");
title[4] = clear;
clear = strtok(NULL, " ");
title[5] = clear;
clear = strtok(NULL, " ");
title[6] = clear;
clear = strtok(NULL, " ");
title[7] = clear;
clear = strtok(NULL, " ");
title[8] = clear;
clear = strtok(NULL, " ");
title[9] = clear;
while (!feof(fp))
{
fgets(test, 100, fp);
if (a >= 1);
{
sum[a] = 0;
cl = strtok(test, " ");
num[a] = atoi(cl);
cl = strtok(NULL, " ");
sprintf(name[a], "%s", cl);
cl = strtok(NULL, " ");
kor[a] = atoi(cl);
sum[a] += atoi(cl);
cl = strtok(NULL, " ");
sum[a] += atoi(cl);
eng[a] = atoi(cl);
cl = strtok(NULL, " ");
sum[a] += atoi(cl);
math[a] = atoi(cl);
cl = strtok(NULL, " ");
sum[a] += atoi(cl);
his[a] = atoi(cl);
cl = strtok(NULL, " ");
sum[a] += atoi(cl);
mus[a] = atoi(cl);
}
a++;
if (a > MAX-1) break;
}
for (int k = 0; k <= MAX; k++)
{
for (int j = 0; j <= MAX; j++)
{
if (a != j)
{
if (sum[k] >= sum[j]){cnt++;}
}
else{continue;}
}
rank[k] = (MAX + 1) - cnt;
cnt = 0;
}
fprintf(outFile,"%s, %s, %s, %s, %s, %s
, %s, %s, %s, %s",title[0],title[1],title[2],title[3],title[4]
,title[5],title[6],title[7],title[8],title[9]);
}
for (int i = 0; i < MAX; i++)
{
itoa(i+1, t1, 10);
itoa(kor[i], t2, 10);
itoa(eng[i], t3, 10);
itoa(math[i], t4, 10);
itoa(his[i], t5, 10);
itoa(mus[i], t6, 10);
itoa(sum[i], t7, 10);
itoa(sum[i] / 5, t8, 10);
itoa(rank[i], t9, 10);
sprintf(test, "%s, %s, %s, %s, %s, %s, %s, %s, %s, %s,\n",
t1, name[i], t2, t3, t4, t5, t6, t7, t8, t9);
fputs(test, outFile);
}
fclose(fp);
fclose(outFile);
return 0;
}
txt 파일을 csv로 변환해서 처리하기 위하여
공백을 기준으로 문자열을 잘랐고, csv 파일에 입력을 할 때"%s,"
와 같이 뒤에,
를 입력하여
csv파일 변환에 알맞게 처리해 주었다.
csv to csv와 txt to csv 과정의 차이점은
문자열을 자르는 기준이다