텍스트 파일의 특정위치의 문자열 추출 프로그램인데 질문있습니다!

hexagon의 이미지

실험실에서 해석 데이터에서 필요한 부분만 추출하기 위한 코드입니다.
그런데 제가 파일 헨들링이나 파싱을 거의 몰라서 친구한테 부탁해서 받은다음에 실험실 요구 사항에 맞게 약간 수정만 한겁니다.
아래 코드에서 E22라는 문자열을 찾은 후 그 위치 부터 세번째 행의 2번째 열의 값을 읽어오는 코드인데..
fgets가 1행씩 읽어오도록 되있는데 while문에서 fgets가 사용되고 그 이후에는 안보이는데 어떻게 3번째 행으로 이동해서 값을 읽어오는지 모르겠습니다.-_-
이걸 제가 원하는 행에서도 읽을수있도록 변형해야되거든요...-_-

그리고 commend line argument를 이용해서 입력파일과 출력파일명을 정할수있도록 변형하고 싶은데 그것도
int main(int argc, char *argv[])로 일단 입력파일만 정할수있도록 했는데 프로그램이 죽어버리네요...-_-
파일 읽어오는 부분에서는 fin = fopen(argv[1], "r");로 했구요...

그럼 인자가 세개일경우는 argv[2],argv[3]....이런 식으로하고 그부분에서 정수형이 필요할 경우는 캐스트 연산자로 형변환하면될까요?

#include
#include
#include

int main()
{
char str[100];
char *temp = 0;
char *step = "step";
char *inc = "increment";
char *frc = "fraction";
bool found = false;
int row = 1;
FILE *fin;
FILE *fout;

fin = fopen("in2.dat", "r");
if(fin == NULL)
{
printf("in2.dat 파일을 여는데 실패했습니다\n");
exit(100);
}

fout = fopen("result.txt", "w");
if(fout == NULL)
{
printf("result.txt 파일을 여는데 실패했습니다\n");
exit(100);
}

while(fgets(str,100, fin) != NULL)
{
temp = strtok(str, " ");
if(strcmp(temp, step) == 0)
{
temp = strtok(NULL, " ");
//fprintf(fout, "STEP %s\n", temp);
continue;
}
else if(strcmp(temp, inc) == 0)
{
temp = strtok(NULL, " ");
//fprintf(fout,"%s\t", temp);
continue;
}

if(found)
{
if(row != 6)
{
row++;
continue;
}
else if(row == 6)
{
row = 1;
temp = strtok(NULL, " ");
temp = strtok(NULL, " ");
//temp = strtok(NULL, " ");
fprintf(fout,"%s\n", temp);
found = false;
}
}

while(temp != NULL)
{
if(strcmp(temp, "E22") == 0)
{
found = true;
break;
}
else if(strcmp(temp, frc) == 0)
{
temp = strtok(NULL, " \n");
fprintf(fout,"%s\t", temp);
break;
}
temp = strtok(NULL, " \n");
}
memset(str, 0, sizeof(str));
}

fclose(fin);
fclose(fout);

return 0;
}

aruee의 이미지

인덴트는 유지해 주시는게 좋겠죠?

1. while loop의 조건 검사할때 한 행을 읽어옵니다.
2. while loop의 내부는 읽어들인 한 행의 문자열을 검색합니다.
3. while loop의 내부에 continue 또는 loop의 끝에 도달할때마다 1번부터 재시작 합니다.

1~3을 반복하면서 파일의 끝까지 움직입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.