2014-04-02 3 views
0

누군가 나를 위해이 수수께끼를 해결할 수 있습니까? ...?
나는 '/ R'및 '/ N'의 차이점에 대해 읽고, 그파일의 캐리지 리턴 문자

이 두 파일을 고려 ... 내가 물어보고 싶은 게 아니에요 :
으로 config.txt :

home/my_user/Documents/prog/my_folder 
home/my_user/Documents/prog/IO/input_for_prog.txt 
home/my_user/Documents/prog/IO/correct_output.txt 

있는 test.txt :

This is a test file 
Why isn't there carriage return char 
at the end of each line in this file? 
이제

는 다음 코드를 고려하십시오

int main(int argc, char* argv[]) { 

    int fd=open(argv[1], O_RDONLY); 
    if (fd==-1) { 
     perror("Error opening"); 
     return -1; 
    } 

    char ch; 
    int ret_code; 

    while ((ret_code=read(fd, &ch, 1))!=0) { 

     if (ret_code==-1) { 
      perror("Error reading"); 
      return -1; 
     } 

     printf("Character is: %c, its ascii value: %d\n", ch, ch); 
    } 
} 

잠재적 인 버그는 잠시 무시하십시오. 문제가 아니기 때문에 잠시만 무시하십시오 (희망 사항). 이 코드는 파일의 각 문자를 인쇄하며 ascii 값을 출력합니다. 이제

,
출력 으로 config.txt를 위해 ... 나는 위의 파일에서 실행하면 어떻게됩니까 시계 :

Character is: h, its ascii value: 104 
Character is: o, its ascii value: 111 
Character is: m, its ascii value: 109 
Character is: e, its ascii value: 101 
Character is: /, its ascii value: 47 
Character is: m, its ascii value: 109 
Character is: y, its ascii value: 121 
Character is: _, its ascii value: 95 
Character is: u, its ascii value: 117 
Character is: s, its ascii value: 115 
Character is: e, its ascii value: 101 
Character is: r, its ascii value: 114 
Character is: /, its ascii value: 47 
Character is: D, its ascii value: 68 
Character is: o, its ascii value: 111 
Character is: c, its ascii value: 99 
Character is: u, its ascii value: 117 
Character is: m, its ascii value: 109 
Character is: e, its ascii value: 101 
Character is: n, its ascii value: 110 
Character is: t, its ascii value: 116 
Character is: s, its ascii value: 115 
Character is: /, its ascii value: 47 
Character is: p, its ascii value: 112 
Character is: r, its ascii value: 114 
Character is: o, its ascii value: 111 
Character is: g, its ascii value: 103 
Character is: /, its ascii value: 47 
Character is: m, its ascii value: 109 
Character is: y, its ascii value: 121 
Character is: _, its ascii value: 95 
Character is: f, its ascii value: 102 
Character is: o, its ascii value: 111 
Character is: l, its ascii value: 108 
Character is: d, its ascii value: 100 
Character is: e, its ascii value: 101 
Character is: r, its ascii value: 114 
, its ascii value: 13 
Character is: 
, its ascii value: 10 
Character is: h, its ascii value: 104 
Character is: o, its ascii value: 111 
Character is: m, its ascii value: 109 
Character is: e, its ascii value: 101 
Character is: /, its ascii value: 47 
Character is: m, its ascii value: 109 
Character is: y, its ascii value: 121 
Character is: _, its ascii value: 95 
Character is: u, its ascii value: 117 
Character is: s, its ascii value: 115 
Character is: e, its ascii value: 101 
Character is: r, its ascii value: 114 
Character is: /, its ascii value: 47 
Character is: D, its ascii value: 68 
Character is: o, its ascii value: 111 
Character is: c, its ascii value: 99 
Character is: u, its ascii value: 117 
Character is: m, its ascii value: 109 
Character is: e, its ascii value: 101 
Character is: n, its ascii value: 110 
Character is: t, its ascii value: 116 
Character is: s, its ascii value: 115 
Character is: /, its ascii value: 47 
Character is: p, its ascii value: 112 
Character is: r, its ascii value: 114 
Character is: o, its ascii value: 111 
Character is: g, its ascii value: 103 
Character is: /, its ascii value: 47 
Character is: I, its ascii value: 73 
Character is: O, its ascii value: 79 
Character is: /, its ascii value: 47 
Character is: i, its ascii value: 105 
Character is: n, its ascii value: 110 
Character is: p, its ascii value: 112 
Character is: u, its ascii value: 117 
Character is: t, its ascii value: 116 
Character is: _, its ascii value: 95 
Character is: f, its ascii value: 102 
Character is: o, its ascii value: 111 
Character is: r, its ascii value: 114 
Character is: _, its ascii value: 95 
Character is: p, its ascii value: 112 
Character is: r, its ascii value: 114 
Character is: o, its ascii value: 111 
Character is: g, its ascii value: 103 
Character is: ., its ascii value: 46 
Character is: t, its ascii value: 116 
Character is: x, its ascii value: 120 
Character is: t, its ascii value: 116 
, its ascii value: 13 
Character is: 
, its ascii value: 10 
Character is: h, its ascii value: 104 
Character is: o, its ascii value: 111 
Character is: m, its ascii value: 109 
Character is: e, its ascii value: 101 
Character is: /, its ascii value: 47 
Character is: m, its ascii value: 109 
Character is: y, its ascii value: 121 
Character is: _, its ascii value: 95 
Character is: u, its ascii value: 117 
Character is: s, its ascii value: 115 
Character is: e, its ascii value: 101 
Character is: r, its ascii value: 114 
Character is: /, its ascii value: 47 
Character is: D, its ascii value: 68 
Character is: o, its ascii value: 111 
Character is: c, its ascii value: 99 
Character is: u, its ascii value: 117 
Character is: m, its ascii value: 109 
Character is: e, its ascii value: 101 
Character is: n, its ascii value: 110 
Character is: t, its ascii value: 116 
Character is: s, its ascii value: 115 
Character is: /, its ascii value: 47 
Character is: p, its ascii value: 112 
Character is: r, its ascii value: 114 
Character is: o, its ascii value: 111 
Character is: g, its ascii value: 103 
Character is: /, its ascii value: 47 
Character is: I, its ascii value: 73 
Character is: O, its ascii value: 79 
Character is: /, its ascii value: 47 
Character is: c, its ascii value: 99 
Character is: o, its ascii value: 111 
Character is: r, its ascii value: 114 
Character is: r, its ascii value: 114 
Character is: e, its ascii value: 101 
Character is: c, its ascii value: 99 
Character is: t, its ascii value: 116 
Character is: _, its ascii value: 95 
Character is: o, its ascii value: 111 
Character is: u, its ascii value: 117 
Character is: t, its ascii value: 116 
Character is: p, its ascii value: 112 
Character is: u, its ascii value: 117 
Character is: t, its ascii value: 116 
Character is: ., its ascii value: 46 
Character is: t, its ascii value: 116 
Character is: x, its ascii value: 120 
Character is: t, its ascii value: 116 
, its ascii value: 13 
Character is: 
, its ascii value: 10 

출력 있는 test.txt을 위해 :

Character is: T, its ascii value: 84 
Character is: h, its ascii value: 104 
Character is: i, its ascii value: 105 
Character is: s, its ascii value: 115 
Character is: , its ascii value: 32 
Character is: i, its ascii value: 105 
Character is: s, its ascii value: 115 
Character is: , its ascii value: 32 
Character is: a, its ascii value: 97 
Character is: , its ascii value: 32 
Character is: t, its ascii value: 116 
Character is: e, its ascii value: 101 
Character is: s, its ascii value: 115 
Character is: t, its ascii value: 116 
Character is: , its ascii value: 32 
Character is: f, its ascii value: 102 
Character is: i, its ascii value: 105 
Character is: l, its ascii value: 108 
Character is: e, its ascii value: 101 
Character is: 
, its ascii value: 10 
Character is: W, its ascii value: 87 
Character is: h, its ascii value: 104 
Character is: y, its ascii value: 121 
Character is: , its ascii value: 32 
Character is: i, its ascii value: 105 
Character is: s, its ascii value: 115 
Character is: n, its ascii value: 110 
Character is: ', its ascii value: 39 
Character is: t, its ascii value: 116 
Character is: , its ascii value: 32 
Character is: t, its ascii value: 116 
Character is: h, its ascii value: 104 
Character is: e, its ascii value: 101 
Character is: r, its ascii value: 114 
Character is: e, its ascii value: 101 
Character is: , its ascii value: 32 
Character is: c, its ascii value: 99 
Character is: a, its ascii value: 97 
Character is: r, its ascii value: 114 
Character is: r, its ascii value: 114 
Character is: i, its ascii value: 105 
Character is: a, its ascii value: 97 
Character is: g, its ascii value: 103 
Character is: e, its ascii value: 101 
Character is: , its ascii value: 32 
Character is: r, its ascii value: 114 
Character is: e, its ascii value: 101 
Character is: t, its ascii value: 116 
Character is: u, its ascii value: 117 
Character is: r, its ascii value: 114 
Character is: n, its ascii value: 110 
Character is: , its ascii value: 32 
Character is: c, its ascii value: 99 
Character is: h, its ascii value: 104 
Character is: a, its ascii value: 97 
Character is: r, its ascii value: 114 
Character is: 
, its ascii value: 10 
Character is: a, its ascii value: 97 
Character is: t, its ascii value: 116 
Character is: , its ascii value: 32 
Character is: t, its ascii value: 116 
Character is: h, its ascii value: 104 
Character is: e, its ascii value: 101 
Character is: , its ascii value: 32 
Character is: e, its ascii value: 101 
Character is: n, its ascii value: 110 
Character is: d, its ascii value: 100 
Character is: , its ascii value: 32 
Character is: o, its ascii value: 111 
Character is: f, its ascii value: 102 
Character is: , its ascii value: 32 
Character is: e, its ascii value: 101 
Character is: a, its ascii value: 97 
Character is: c, its ascii value: 99 
Character is: h, its ascii value: 104 
Character is: , its ascii value: 32 
Character is: l, its ascii value: 108 
Character is: i, its ascii value: 105 
Character is: n, its ascii value: 110 
Character is: e, its ascii value: 101 
Character is: , its ascii value: 32 
Character is: i, its ascii value: 105 
Character is: n, its ascii value: 110 
Character is: , its ascii value: 32 
Character is: t, its ascii value: 116 
Character is: h, its ascii value: 104 
Character is: i, its ascii value: 105 
Character is: s, its ascii value: 115 
Character is: , its ascii value: 32 
Character is: f, its ascii value: 102 
Character is: i, its ascii value: 105 
Character is: l, its ascii value: 108 
Character is: e, its ascii value: 101 
Character is: ?, its ascii value: 63 
Character is: 
, its ascii value: 10 

눈치 채고 답변을 찾을 수 없었던 몇 가지 :
먼저 test.txt 파일의 경우,이 파일의 각 줄 끝에 '/ r'문자가없는 이유는 무엇입니까? config.txt에는 '/ r' '/ n' 각 줄의 끝에서 ??
둘째로, 왜 "문자"가 "이라고 인쇄 된 줄에서 사라졌는가, 그 ascii 값은 13" ??

감사합니다.

답변

5

\r은 콘솔 창 (즉, 파일이 아님)으로 인쇄 할 때 줄의 시작 부분으로 돌아가도록 지시합니다 (따라서 "문자가"텍스트는 사라집니다). 그러나 \n은 다음 행으로 이동하도록 지시합니다. \r은 예를 들어 같은 줄에 진행률을 표시하는 데 유용합니다.

파일로 저장할 수 있습니다

\r\n, \n, 또는 당신이 혼합하는 경우 많은 경고를 각 줄의 끝에 \r (아래 주석 참조), 이러한 일이 실제로 (텍스트 편집기로 동일하게 해석됩니다 파일 내의 유형). \r\n과 하나의 파일이 있고 다른 파일은 \n 인 것으로 보입니다.

+0

일부 시스템에서는 줄 끝에 '\ r'이있는 파일도 저장하므로 옵션은'\ n' (* nix 계열 시스템),'\ r \ n' (주로 창) 및 '\ r' (오래된 맥, 코모도, 경우에 따라서는 OS X, 나는 회상하는 것 같다.) –

+0

'- r'을 포함하도록 차가워 진 대답을했다. 감사! – noelicus

+0

OP가 CR/LF를 '평평하게'코드를 작성하는 것처럼 느껴지지 않으면 텍스트 모드 (''rt "')와'fgets'로 파일을 여는 데'fopen '을 사용하는 것이 좋습니다. – usr2564301

0

내가 소유하고 있지 않기 때문에 두 파일의 차이점을 찾을 수 없으며 파일을 만들 수있는 방법이 없습니다.

즉, ASCII 값 13과 ASCII 값 10은 인쇄 할 수없는 문자입니다. 캐리지 리턴 및/또는 라인 피드를 제어하는 ​​데 사용되는 보이지 않는 문자가 \r 또는 \n으로 변한 것으로 보지 않는 한 그 값을 감지하고 변환하지 않으면 해당 값을 "보지"않습니다.

1

"Character is"라는 이유가 사라지는 이유는 \ 13 문자가 캐리지 리턴이라는 것입니다. 커서를 줄의 처음으로 되돌려 놓으면 나머지 텍스트 ", ascii 값은 ..."이 그것을 덮어 씁니다.

\ n (줄 바꿈) 또는 \ r \ n (캐리지 리턴 및 줄 바꿈) 만 유효합니다.

2

라인 끝 차이는 다양한 이유로 인해 발생할 수 있습니다. 다른 텍스트 편집기가 사용되었습니다. \n\r 문자로

, 그들은 다음을 수행하십시오

  • \n이 다음 행
  • \r에 캐럿을 이동 현재의 caret를 행의 선두로 이동

이 지식으로 당신은 프로그램의 산출물을 이해할 수 있어야합니다. 이것은 '정상'문자 :

Character is: t, its ascii value: 116 

\r,이 인쇄 된 경우 캐럿은 행의 시작 부분으로 이동되었습니다 방법 주 :

, its ascii value: 13 

이것은 \n가주의하는 방법 캐럿 이 인쇄 된 경우 다음 행으로 이동되었습니다 :

Character is: 
, its ascii value: 10 
+0

대단한 답변을 보내 주셔서 감사합니다. 이것은 많이 설명합니다. –

1

첫 번째 질문은 우리가 파일이 생성 된 방법을 알고하지 않기 때문에, 우리에 의한 해결이 불가능하다. Windows 프로그램은 일반적으로 '\ r \ n'을 사용하고 Linux의 경우 '\ n'이면 충분합니다.

두 번째 질문은 대답하기 쉽습니다. "Character is : \ n, its ..."라고 말하면 개행 문자를 얻을 수 있습니다. 특수 문자를 이스케이프하지 않는 한 줄 바꾸기없이 줄 바꿈을 인쇄 할 수 없습니다.

편집 탭과 다른 사람과 마찬가지로 \ & 이상을 탈출하고 싶을 수 있습니다. here

+1

"첫 번째 질문은 우리가 파일을 어떻게 작성했는지 모르기 때문에 해결할 수 없습니다. Windows 프로그램은 일반적으로 '\ r \ n'을 사용하고 Linux는 '\ n'이면 충분합니다." 위대한, 정확히 그 첫 번째 질문에서 찾고 있던 대답은, 그것이 파일이 어떻게 그리고 어디에서 만들어 졌는지에 따라 필요한 정보입니다 ... –