2013-06-25 2 views
-1

이 입력 파일은 "https://code.google.com/codejam/contest/351101/dashboard/do/A-large-practice.in?cmd=GetInputFile&problem=374101&input_id=1&filename=A-large-practice.in&redownload_last=1&agent=website&csrfmiddlewaretoken=OWMxNTVmMTUyODBiYjhhN2Q2OTM3ZGJiMTNhNDkwMDF8fDEzNzIxNzI1NTE3ODAzMjA%3D" 이 파일을 읽으려고했습니다 : -using freopen ("filename.txt", r, stdin); 그런 다음 출력을 작성하여이 코드 잼 연습 문제에서 판사에게 업로드 할 수있는 다른 텍스트 파일에 쓰길 원했습니다.출력을 cpp 프로그램의 텍스트 파일에 쓸 수 없습니다

#include<iostream> 
    #include<cstdio> 
    using namespace std; 
    int main() 
    { 
    int t,k=0,a[2000]; 
    freopen("ab.txt","r",stdin); 

    scanf("%d",&t); 

    while(t--) 
    { 
     freopen("cb.txt","w",stdout); 

     int c; 

     scanf("%d",&c); 
     int n; 
     scanf("%d",&n); 
     for(int i=0;i<n;i++) 
     scanf("%d",&a[i]); 

     printf("Case #%d: ",++k); 
     for(int i=0;i<n-1;i++) 
     {for(int j=i+1;j<n;j++) 
      if((a[i]+a[j])==c) 
      {printf("%d %d\n",i+1,j+1); 
      i=n;} 
      } 

    } 
    return 0; 
    } 

이것은 내 코드입니다. 이제 문제는 출력 파일 cb.txt가 입력의 마지막 줄만 포함한다는 것입니다. 출력 전체를 cb.txt에 쓰고 싶습니다. 어떻게해야합니까?

+0

예, 하나의 더하기 기호는 모든 차이를 만들 수 있습니다. – chris

+0

w +, 미안 파일 처리에 익숙하지 않다. – swapedoc

+1

C 대신 C++ I/O를 사용하는 것이 훨씬 쉽습니다. 형식이 안전하고 읽기 쉽습니다. 또한 완료되면 파일 스트림을 얻을 수 있습니다. . – chris

답변

0

콘솔 입력 (scanf)이 파일 입력 (fscanf)과 혼동을 일으켰을 수 있습니다.

파일 I/O의 C 스타일 기능은 f입니다.
참조 : fprintf, fscanf, fgets, and fputs.

+0

'freopen'이 그것을 리다이렉트합니다. – chris

0

나는 실수를 저질렀다. freopen ("cb.txt", "w", stdout); 루프가 반복 될 때마다 출력을 덮어 쓰게되었습니다. 이제는이 라인을 루프 바깥에 놓고 작동합니다.

관련 문제