2017-10-29 5 views
0

프로그램이 수정 된 단어를 출력하지 않습니다.C write() 함수가 작동하지 않습니다.

제이크

수정 이름 : 사실 내가 입력 "제이크"예를 들어, 콘솔의 출력 인 경우는 ... 아무것도 반환하지 않습니다 JAKE

를하지만 출력을 암호화를 촉진한다 이름. 당신이 나를 도울 수? 나는 쓰기 기능

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 
#include <string.h> 

int main() { 

    char name [120]; 

    read(0,name,120); 

    for(int i = 0; i<=119; i++){ 
     if(name[i] >= 'a' && name[i] <= 'z'){ 
      name[i] -= 32; 
     } 
    } 

    printf("\nModified Name: %s\n",name); 
    int c = 13; 

    for (int i = 0; i<=119; i++){ 
     if(name[i] + 13 > 'Z'){ 
      c = i + 13 - 'Z'; 
      name[i] = 'A' + c; 
     }else{ 
      name[i] = name[i] + c; 
     } 
    } 

    write(0, name, 120); 
    return 0; 
} 
+1

쓰기 기능에서 파일 설명자가 0 인 이유는 무엇입니까? – Lazar

+1

'read' 나'write'와 같이 실패 할 수있는 함수의 반환 값을 항상 확인해야합니다. – melpomene

+0

어떤 컴파일러를 사용하고 있습니까? 나는 온라인 컴파일러를 사용해 보았고 제대로 작동하는 것으로 보인다 : https : //onlinegdb.com/ByA-Wd7Rb –

답변

1

내가 쓰는 기술자 1 (표준 출력) 파일로 이동해야한다고 생각에 실수를하지 않았다 생각, 아니?

1

파일 설명자 0은 표준 입력 (입력 장치 또는 파일 또는 키 보드) 프로그램에서 필수적으로 데이터를 읽고 이러한 장치에 쓰는 것이 가장 확실하게 실패 함을 나타냅니다.

0 - 표준 입력

파일 기술자 1은 표준 출력 (모니터, 다시 파일이나 디스크가 더 생각하는 말) 프로그램은 기본적으로 다음에 데이터를 기록이다.

1 -

파일 기술자 (2)은 표준 출력 다소 출력 장치 (이상 진행 처리에 일부 특정 해석과 즉 어떤 장치 또는 파일, 또는 콘솔거나 ..)

2 - 당신의 열려진

경우

write(0, ...); 

프로그램이 기본적으로 읽기 모드로 열 수있는 입력 장치에 쓰려고하기 때문에 실패하게됩니다.

자세한 내용은 아래 링크를 확인하십시오. wiki page here