2011-12-22 3 views
0

C에서 파일의 입력을 정확히 취하는 방법은 무엇입니까?C에서의 파일 처리에 대한 이해

예를 들면 다음과 같습니다. 파일 포인터를 특정 파일에 할당하고 특정 작업을 수행하려고한다고 가정 해보십시오. 파일 포인터를 지정하는 구문은 정확히 무엇입니까 파일은 C : \ Acads \ bin \ File.txt에 있다고 가정합니다. 내 코드에서 나는이

FILE *fp1; 
fp1=("C:\Acads\bin\File.txt","r+"); 

그것은 나에게 오류를주고 끝나는 때.

업데이트 : 오케이 여기에 내 주요 의심이 있습니다.

내 파일이 너무 길기 때문에 컴파일러에게 정확히 어떻게 알려야합니까? 나는 너희들이 나에게 말했지만 아무 소용이없는 모든 것을 시도했다.

+0

그냥 재미 (및 디버깅) 파일 이름을 인쇄하십시오 :'printf ("파일 이름은 % s \ n", "C : \ Acads \ bin \ File.txt");':) – pmg

+0

그냥 귀하의 질문에 대한 인터넷 검색 결과의 톤을 제공합니다. –

답변

2

난 당신이 오타로 도망 생각 : 그것은 말을해야 :

fp1=fopen("C:\\Acads\\bin\\File.txt","r+"); 

이는 \가 시작되기 때문에 :

fp1=fopen(filename,"r+"); 

는 또 다른 백 슬래시로 각 백 슬래시 문자 \을 탈출해야 이스케이프 시퀀스. 예 : \n은 개행을 의미합니다. \\은 간단한 백 슬래시로 확장되었습니다.

+0

좋아, 내가 forogt '\'특별한 charcater했다. 그러나 당신이 나에게 말한 것을하는 것에 영감을, 그것은 여전히 ​​작동하지 않습니다 ... 내 다음 가파른은 c = getc (fp1)입니다; printf ("% c", c); 이 코드를 실행하려고하면 오류가 발생합니다. –

+0

오타를 직접 만들었으므로 '열기'가 아니고 '열리지 않음'이어야합니다. 또한 정확한 컴파일러/링커 오류를 알려 주어 문제를 확인하십시오. – Constantinius

+0

FILE * fp1; \t fp1 = fopen ("C : \\ Academics \\ gcc \ bin \\ pe.txt", "r +"); \t printf ("열린 파일 \ n"); \t c = getc (fp1); \t printf ("% c", c); 컴파일러에서 오류를주지 않습니다. 그러나 프로그램을 실행하면 원하는 출력이 인쇄되지 않습니다. –

0

여기 fopen

FILE *fp; 
fp = fopen(path, "r+"); 

man fopen 살펴보십시오 사용하는 간단한 예입니다.

+0

을 추가하십시오. 그는 Windows에서 어떤 사람인지 모릅니다. – jforberg

+0

글쎄, 그것도 google –

+0

* http : //www.google.at/? q = fopen * 그 다음은 ... – Constantinius

0

읽기 전에 파일을 열어야합니다. 다음은 파일을 열고 결과 행을 읽는 방법의 전체 예제입니다.

http://www.phanderson.com/files/file_read.html

+0

네,하지만 끝났어. , 파일이 저장된 위치를 언급하지 않았습니다. 프로그램이 파일의 위치를 ​​어떻게 알 수 있습니까? 그게 뭔지 모르겠다 –

0

파일 포인터이 클라이언트의 위치를 ​​같은 파일에 대한 특정 정보를 포함하는 구조체에 대한 포인터입니다, 그것이 다른 것들 운영 체제 및 libc의 구현에 따라 얼마나 큰.

이제 요점은 구조체에 실제로 들어있는 내용에 대해 걱정할 필요가 없다는 것입니다. 라이브러리 함수에 대한 포인터를 가질 수 있고 라이브러리 함수가이를 어떻게 처리해야하는지 알 수 있습니다. 이것은 이식성의 훌륭한 기능을 제공합니다. 즉, 파일을 완전히 다른 방식으로 처리하는 시스템에서도 코드가 변경되지 않고 작동 할 수 있습니다.

1

This 당신이 뭔가 잘못 있는지 확인하기 위해 파일 & 사용 perror을 열 fopen을 사용할 수 있습니다 C.에서 파일 처리의 개관을 주어야한다. 다음 줄의 내용 :

FILE *fp; 
fp= fopen("C:\\Acads\\bin\\File.txt","r+"); /* You have to escape \ in C as it is a special character*/ 
if (fp == NULL) 
{ 
    perror("fopen"); 
    /*Handle error*/ 
} 
/* File operations */ 
fclose(fp); 

희망이 있습니다.

+0

그랬어. 이 문제를 정확히 어떻게 해결합니까? –

+0

'perror'로부터 어떤 에러 메시지가 나왔습니까? 'fp'는 괜찮습니까? 'getc'를 사용하고 있다면'int'가 아닌'char'을 리턴한다는 것을 기억하십시오. –