2013-04-17 3 views
3

I는 입력 파일에서, 다음과 같습니다 텍스트를 가지고 :제거 텍스트

func: 
    sll $t3, $t4, 5  # t1 = (i * 4) 
    add $t3, $a1, $t4  # t2 contains address of array[i] 
    sw $t1, 4($t2)  # array[i] = i 
    addi $t2, $t5, 3  # i = i+1 
나는 그것을 "청소", 그리고 다른 파일에 출력을이처럼 보이는 것

:

어떻게 코드의 블록 승 I로 작동하는 것을 변경할 수 있습니다

while(fgets(line, 100, input) != NULL) 
    { 
    int comment = 0; 
    for(int x = 0; x < 100; x++) 
    { 
     if(line[x] == '#') 
      comment = 1; 

     if(comment == 1) 
      line[x] = '\0'; //I know this is incorrect 
    } 
    fprintf(cleaned, "%s", line); 
    } 

: 여기

func: 
    sll $t3, $t4, 5 
    add $t3, $a1, $t4 
    sw $t1, 4($t2) 
    addi $t2, $t5, 3 

내가이 일을 사용하고있는 코드 블록이다 개미? 나는 엉망으로 '\ n' '\ 0'과 ""으로 몇 가지 시도를했지만 그 중 아무 것도 제대로 작동하지 않았습니다.

미리 감사드립니다.

답변

5

이렇게 할 수는 있지만 플래그를 설정할 필요는 없습니다. 당신이 바로 선을 절단하고 더 당신은 당신의 라인에 '#'을 찾기 위해 strchr을 사용할 수 있습니다 break;

for(int x = 0; x < 100; x++) 
{ 
    if(line[x] == '#') { 
     line[x] = '\n'; 
     line[x + 1] = '\0'; 
     break; 
    } 
} 
2

정확히 무엇을하는지 보려면 디버거에서이 코드를 실행하십시오. 당신의 바깥쪽에 틈을 놓고 while 루프를 돌리고 한 번에 한 캐릭터 씩 단계별로 행동을 정확하게 이해하십시오. 다음에해야할 일이 무엇인지 분명하게 알려줄 것입니다.

유닉스에서 사용하는 경우 gdb으로 디버그 정보를 포함하려면 -g으로 프로그램을 컴파일하고 시작하려면 "gdb cheatsheet"와 같은 프로그램을 컴파일하십시오.

0

으로 검색 어떤을 중지 할 수 있습니다. 발견되면 포인터가 반환되고 그렇지 않으면 NULL입니다.
시작과 발생의 차이를 확인하고 새 문자열을 만들 수 있습니다.

/* strchr example */ 
#include <stdio.h> 
#include <string.h> 

int main() 
{ 
    char str[] = "This is a sample string"; 
    char * pch; 
    printf ("Looking for the 's' character in \"%s\"...\n",str); 
    pch=strchr(str,'s'); 
    while (pch!=NULL) 
     { 
     printf ("found at %d\n",pch-str+1); 
     pch=strchr(pch+1,'s'); 
     } 
    return 0; 
} 

참조 용으로 here을 참조하십시오.