2014-12-09 3 views
-2

for 루프가 내 코드에서 작동하지 않습니다. 할당 된 전체 구조체가 숫자로 올바르게 채워 졌음에도 불구하고 [700]에서 [999]까지의 결과 만 보여줍니다 (검증했습니다). 또한 이전에 인쇄 한 내용은 모두 삭제합니다 (따라서 printf("check")). 이전에 사용했던 것과 비슷한 기능으로 교체하려고 시도했지만 작동하지 않았습니다. "%f %f" 사이의 ';'은 내가 읽는 파일에서 내 변수를 분리하기 때문에 존재합니다. 또한 u=1000fscanf 및 printf를 사용한 내 for 루프가 모두 인쇄되지 않습니다.

#include "stdafx.h" 
#include "stdio.h" 
#include "stdlib.h" 

struct punkt { 
    float czas; 
    float wartosc; 
}; 

int main() { 
    FILE *pt; 
    pt = fopen("C:\\Users\\Lenovo\\Desktop\\sygnal.csv", "r+"); 
    if (pt == NULL) { 
     printf("error"); 
     getchar(); 
     return 0; 
    } 

    int u = 0; 
    float a, b; 

    while (fscanf(pt, "%f; %f", &a, &b) != EOF) { 
     u++; 
    } 
    rewind(pt); 
    punkt* ptr = (punkt*) malloc(u * sizeof(punkt)); 

    printf("%i", u); 
    printf("check"); 
    getchar(); 

    int x; 
    for (x = 0; x < u; x++) { 
     fscanf(pt, "%f; %f", &ptr[x].czas, &ptr[x].wartosc); 
     printf("%f %f\n", ptr[x].czas, ptr[x].wartosc); 
     printf("%i ", x); 
    } 

    getchar(); 
    free(ptr); 
    fclose(pt); 
    return 0; 
} 
+0

이 코드입니까? 구조체를'typedef struct {...} punkt; '라고 재 작성하지 않으면 컴파일되지 않습니다. –

+0

네, 그건 내 것입니다. 내가 사용한 라이브러리를 추가하는 것을 잊어 버렸다. 죄송 해요. 나는 그것을 편집했다. – Dudu

+0

나를 위해 typedef없이 작동합니다. – Dudu

답변

0

재미있게도 충분히 나는 그게 나옵니다. 그리고 제가 768 개의 라인을 가지고있을 때, 마지막 300 개 라인 만이 거기에 보여집니다. 하지만 콘솔에 마지막 300 줄만 표시되는 이유는 내 콘솔 (기본값) 속성이 버퍼 높이를 300으로 지정하기 때문입니다.

0

이 프로그램을 직접 컴파일하고 실행하지 않았기 때문에 확실하지 않습니다. 그러나 문제는 프로그램보다는 터미널에서 오는 것처럼 들립니다. 가능성이있는 일은 터미널에 300 줄의 텍스트 공간 만 있기 때문에 "for"루프에 1000 줄을 쓰면 나머지 모든 것을 터미널에서 꺼내고 마지막 300 줄 (700-999)을 메모합니다) 적합 할 수 있습니다. 대신 fprintf를 사용하여 출력을 새 파일에 쓰고 출력이 제대로 작동하는지 확인하십시오.

+0

고마워요. 그것은 사실 인 것처럼 보인다. 나는 내 터미널을 넓힐 수있는 방법에 대한 대답을 믿는다. 인터넷 어디에서나 찾을 수있다. 나는 내가 300 라인을 몇 번 더 인쇄했다고 생각하기 때문에 조금 놀랐습니다. 어쨌든 고마워요! – Dudu

+0

나는 기꺼이 대답을 upvote하지만 내 낮은 평판으로 인해 수 없습니다. – Dudu

관련 문제