2016-03-29 30 views
1

C programlamada yeniyim. Giriş dosyam var ve giriş dosyasının ilk satırını atlamak ve çıktı dosyası oluşturmayı denemek istiyorum. Dosyam bazı grafik bilgileri içeriyor. Kullanıcı girişleri yerine giriş dosyasından u, v, w değerleri almak istiyorum.Ama u, v, w için değer alamıyorum.C'deki ilk girdi dosyası satırı nasıl atlanır?

printf("Enter (u v w):\n"); 
    for(i = 0; i < edges; ++i){ 
     scanf("%d%d%d", &u, &v, &w); 
    } 

böyle çalıştı: Belki böyle

fgets(buffer, 1024, inputFile);  
     while((ch = fgetc(inputFile)) != EOF) 
     { 
     sscanf(buffer, "%d%d%d", &u, &v, &w); 
      } 
+1

veri nasıl olmalıdır? – Taelsin

+0

sadece sayıları içerir: 1 2 3 – zeynep

+2

Algoritmanınız diyor ki: bir satır oku. Ardından, dosyadan birer birer birer birer birer birer atılırken, üç 'int 'değeri için okunan ilk (ve sadece) satırı tekrar tekrar tarayın. Senin niyetin olduğundan emin değilim, ama tahmin etmiyorum. – WhozCraig

cevap

1

:

fscanf(inputFile, "%*[^\n]"); // Read and discard a line 
while(fscanf(inputFile, "%d%d%d", &u, &v, &w) == 3) 
{ 
    ... 
} 

Örnek kod:

#include <stdio.h> 
#include <stdlib.h> 

int main(void) 
{ 
    int u, v, w; 
    FILE *fp; 
    fp = fopen("data.txt", "r"); 
    if (!fp) 
    { 
     perror("fopen()"); 
     exit(EXIT_FAILURE); 
    } 
    fscanf(fp, "%*[^\n]"); // Read and discard a line 
    while (fscanf(fp, "%d%d%d", &u, &v, &w) == 3) 
    { 
     printf("%d %d %d\n", u, v, w); 
    } 
    fclose(fp); 
} 

dat

1 2 3 
4 5 6 
7 8 9 

a.txt çıkışı:

4 5 6 
7 8 9 
+0

Denedim ama hiçbir şey fark yaratmadı. – zeynep

+0

@zeynep "Fark yarattı" ile ne demek istiyorsun? Başarısız oldu? –

+0

Hiçbir şey değişmedi. Aynı sonucu elde ediyorum. – zeynep