2013-08-07 6 views
0

나는 터보 C와 메모장을 사용하여 일본어를 영어로 번역 한 사례 연구를하고 있습니다. 내 코드의Turbo C 데이터베이스 (메모장)

관련 부분 :

#‎include‬ <stdio.h> 
main() 
{ 
    FILE *a; 
    char word[20], ans[1]; 
    clrscr(); 
    a=fopen("dictionary.dbf","a"); 
    do 
    { 
     printf("Add a word: "); 
     scanf("%s",&word); 
     fprintf(a,"%s \n",word); 
     printf("Add another one? (Y/N)"); 
     scanf("%s",ans); 
    }while(strcmp(ans,"y")==0); 
    fclose(a); 
} 

이 코드에 TC에서 단어를 삽입하는 저를 가능하게하고 그것을 메모장을 저장합니다. 불행히도 메모장에서 특정 단어를 인쇄 한 다음 TC로 표시하는 방법을 모르겠습니다.

나는 너희들에게 약간의 도움이 필요하다. 이 사례는 필자의 사례 연구이며 그룹을 가지지 않고 사례 연구를 수행합니다.

+3

왜? 왜 터보 C++인가? – triclosan

+0

ans의 크기는 1입니다. 어떻게 C 타입 문자열을 빈 문자열에 저장하겠습니까? 거기에 Y 또는 N을 저장할 수있는 저장 공간이 필요합니까? 이 방법은 좋은 버퍼 오버 플로우 보안 문제의 좋은 예입니다. 'Y '는 2 바이트 ({'Y ','\ 0 '})를 필요로하고'% s'이 원하는만큼 많은 문자를 읽을 수 없도록해야합니다. – hetepeperfan

+0

'% s'을 (를) 사용하여 문자열을 검색하는 것이 scanf 문에'&'를 요구하지 않는다는 것을 알고 있습니다. – Konsole

답변

1

간단한 단계 만 수행하면됩니다.

  1. 메모장은 파일을 열어 fopen(const char * filename, const char * mode)에 의해 열립니다.
  2. 파일을 열
  3. 당신은 있는 작업을 fwrite(const void * ptr, size_t size, size_t count, FILE * stream)을 사용할 수 있습니다, 당신이 원하는 콘솔에서 또는 어디서든 것을 인쇄 ... fread(void * ptr, size_t size, size_t count, FILE * stream)
  4. 이제 마지막 단계로 파일을 읽을.

희망 하시겠습니까? 모든 오류 검사를 적용하는 것을 잊지 마십시오.

0
char buf[100]; 
    FILE *a; 
    a=fopen("dictionary.dbf","r"); 

    while (!feof(a)) 
    { 
     fgets(buf, sizeof(buf), a); 
     printf ("%s",buf); 
    } 

    fclose(a);