// Char codes 배열에 000012010B 이런 값이 들어있씁니다.
// 이 값들을 int 배열에 넣고 싶은데 segmentaion 오류가 발생하네요
// 혹시 이유를 아시는분 있나요???
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#define LINESIZE 80
#define TAG 1
#define PROGRAMNAME 6
#define ADDR 6
#define SIZE 6
#define LENGTH 2
#define CODES 60
#define LABELSIZE 9
#define OTHERS 60
int main(int argc, char *argv[]) {
char cline[LINESIZE];
char tag[TAG];
char programname[PROGRAMNAME];
char addr[ADDR];
char size[SIZE];
char length[LENGTH];
char codes[CODES];
char label[LABELSIZE];
char others[OTHERS];
char *cptr = NULL;
FILE *rfd, *wfd;
int ch_int[CODES];
int i = 0;
rfd=fopen(argv[1],"r");
wfd=fopen(argv[2],"w");
while(fgets(cline, LINESIZE, rfd) > 0) {
cptr = cline;
if(*cline == 'H') {
strncpy(tag,cptr,TAG);
programname[TAG]='\0';
strncpy(programname,cptr+TAG,PROGRAMNAME);
programname[PROGRAMNAME]='\0';
cptr = cline+TAG+PROGRAMNAME;
strncpy(addr,cptr,ADDR);
addr[ADDR]='\0';
cptr = cline+TAG+PROGRAMNAME+ADDR;
strncpy(size,cptr,SIZE);
size[SIZE]='\0';
fprintf(wfd, "TAG : %s, PROGRAM NAME : %s, ADDR : %s, SIZE : %s", tag, programname, addr, size);
if(size[strlen(size)-1] != '\n') {
fprintf(wfd, "\n");
}
}
else if(*cline == 'T') {
strncpy(tag,cptr,TAG);
programname[TAG]='\0';
strncpy(addr,cptr,ADDR);
addr[ADDR]='\0';
cptr = cline+TAG+ADDR;
strncpy(length,cptr,LENGTH);
length[LENGTH] ='\0';
cptr = cline+TAG+ADDR+LENGTH;
strncpy(codes,cptr,CODES);
codes[CODES] ='\0';
cptr = cline+TAG+ADDR+LENGTH+CODES;
fprintf(wfd,"TAG : %s, ADDR : %s, LENGTH : %s", tag, addr, length);
while (codes != NULL)
{
ch_int[i] = codes[i];
fprintf(wfd, "%d", ch_int[i++]);
}
if(size[strlen(size)-1] != '\n') {
fprintf(wfd,"\n");
}
}
else if(*cline == 'M' || *cline == 'E') {
strncpy(tag,cptr,TAG);
programname[TAG]='\0';
strncpy(addr,cptr,ADDR);
addr[ADDR]='\0';
cptr = cline+TAG+ADDR;
strncpy(length,cptr,LENGTH);
length[LENGTH] ='\0';
cptr = cline+TAG+ADDR+LENGTH;
strncpy(codes,cptr,CODES);
codes[CODES] ='\0';
cptr = cline+TAG+ADDR+LENGTH+OTHERS;
fprintf(wfd,"TAG : %s, ADDR : %s, LENGTH : %s, OTHERS : %s", tag, addr, length, codes);
if(size[strlen(size)-1] != '\n') {
fprintf(wfd,"\n");
}
}
strcpy(tag, " " );
strcpy(programname, " ");
strcpy(addr, " ");
strcpy(size, " ");
strcpy(codes, " ");
}
fclose(rfd);
fclose(wfd);
return 0;
}
http://space37.tistory.com/221