2014-06-28 110 views
-6

我需要用C編寫一個讀取2列數據的程序。從文件中讀取只獲得第一個字符

文件看起來是這樣的:

value1 4.34 
value2 45.4 
value3 35325.34 

等。 編輯! 這裏是我到目前爲止的代碼:

void readin() 
{ 
#include <stdio.h> 
FILE *input; 
int i,x=1; 
float value[5]; 
int name[5]; 
if (input == NULL) 
{ 
    printf("Error"); 
} 
for (i=1; i <5; i++) 
{ 
    fscanf(input,"%s %f \n", &name[i],%value[i]); 
} 
for (x=1; x<5; x++) 
{ 
x=i 
printf("\n %c &.5f", name[i],value[i]); 
i++; 
} 
fclose(input); 

}

當我在fscanf聲明把%c,只有第一個字母被讀取。另外,我總是會遇到一些分段錯誤。

我需要改變什麼才能讓程序讀取整個名稱?

+3

我不認爲'%value [i]'甚至可以編譯,並且你沒有足夠的重現你的代碼。 (展示一個重現問題的最小,完整的例子)。 – Flexo

+1

這仍然不是一個*完整*程序。將所需的所有內容展示給編譯器並將其複製到任何地方。 – Flexo

+0

我編輯它。現在更好 – user3786663

回答

0
void readin(){ 
    FILE *input; 
    int i, x; 
    float value[5]; 
    char name[5][16]; 

    input = fopen("data.txt", "r"); 
    if (input == NULL) 
    { 
     printf("Error"); 
     return ; 
    } 
    for (i=0; i <5; i++) 
    { 
     if(2!=fscanf(input, "%15s %f", name[i], &value[i])) 
      break; 
    } 
    for (x=0; x<i; x++) 
    { 
     printf("%s %.5f\n", name[x], value[x]); 
    } 
    fclose(input); 
} 
+0

感謝您的幫助。 但這並不打印出不止一個字母..我不知道爲什麼..:/ 只打印 V 23.112 V 12.22 V 2.231 – user3786663

+0

一切正常。謝謝! – user3786663

相關問題