2014-07-25 4 views
-1

행을 제대로 계산할 수 없습니다! 나는 당신의 문제가 정확히 무엇인지 확실하지 않다파일과 각 단어의 열과 행이 일치합니다.

int main() 
{ 
FILE * file2; 
file2 = fopen("a1.txt","r"); 
int    c ;   
unsigned long  newline_count =1,sthlh_count=0; 
char str[56]; 
while (fscanf(file2,"%s",str)!=EOF)  
    { 
      c=fgetc(file2); 
     printf("%s\n",str); 
      if (c == '\n') newline_count++; 
      if (c == ' ') sthlh_count++; 
      printf("%d %d\n",newline_count,sthlh_count); 

    } 
} 
+1

왜 'fscanf'와'fgetc'를 사용하고 있습니까? 'while ((c = fgetc (file2))! = EOF)'하고 기존의 fgetc 행을 삭제 했습니까? – itdoesntwork

+0

왜냐하면 나는 단어를 편집해야하기 때문에 ... 나는 그 순간을 시도 할 것이지만 다시 프로그램은 "어떤"선을 잃는다 !!! – GP95

+0

[while ((c = fgetc (file2))! = EOF) {\t \t fscanf (file2, "% s", str); ...]하지만 다시 : ( – GP95

답변

1

,하지만 난 한 가지 즉시 참조 :

Words are flowing out \n 
like \n 
They \n 
Pools dsa\n 
Possessing 

내 코드 :

내 파일이 예를 a1.txt입니다. while 루프의 본문에

while (fscanf(file2,"%s",str)!=EOF)  

, 당신은 printf에 저장 str의 값을 사용하지 않습니다. 기억하십시오. fscanf은 파일을 읽을뿐만 아니라 파일을 전달하는 위치를 런타임에 알려주는 파일 객체의 포인터를 이동하므로 str에 읽히는 모든 문자는 루프 본문의 코드에 의해 처리되지 않습니다 . 이것이 당신이 "선을 잃는 이유"입니다.

다음은 일을해야 무엇 :

while ((c=fgetc(file2)) != EOF) ... 

을 여기에서, 당신은 그냥 EOF 경우 확인 후, c에 저장, 각 문자를 읽고. 또한 여전히 printf를 사용하려면 라인을 인쇄하는 대신 루프의 본문에이 문자를 인쇄하십시오. 다른 fgetc 줄을 버리십시오 (또는 "잃는"문자가 될 것입니다!).

+0

첫 번째 코드를 생성하는 문제를 이해했습니다 !!! 맞습니다 .. c는 int 또는 char입니까? – GP95

+0

'fgetc()'이 char을 반환합니다 – itdoesntwork

+0

모든 단어를 테이블에 저장해야합니다. 가장 좋은 방법은 c = '\ n 인 경우 컨트롤입니다. '다음 테이블을 멈추십시오 ?? – GP95

0
#include <stdio.h> 
#include <string.h> 

int main(){ 
    FILE *file2 = fopen("a1.txt", "r"); 
    unsigned long newline_count = 0, word_count=0; 
    char line[1024], *word , *delimiter = " \n"; 

    while (fgets(line, sizeof(line), file2)){ 
     ++newline_count; 
     for(word = strtok(line, delimiter); word ; word = strtok(NULL, delimiter)){ 
      printf("%lu %lu : %s\n", newline_count, ++word_count, word); 
     } 
    } 
    fclose(file2); 
    return 0; 
} 
+0

작동하지만 워드가 테이블과 포인터가 필요하지 않습니다. – GP95

+0

@ GP95 'file2'는 포인터입니다. 당신은 당신이 말하는'테이블'이 무엇입니까? – BLUEPIXY

+0

@ GP95 이걸 좋아해. 'char table [16] [56];' – BLUEPIXY

관련 문제