2016-11-18 48 views
-1

我有一個數據列表,我試圖將字符存儲在一個int整數和小數雙精度數組中。問題是:你如何在不閱讀整條生產線的情況下做到這一點?我在想,也許問是否有空間,停止閱讀。但我怎麼會這樣做,同時考慮到有多行?下面是數據:逐字讀取數據

A 0.08030130328545595500 
B 0.01404566680148545800 
C 0.02309245337888202900 
D 0.04680329046987134100 
E 0.12475974957130967000 
F 0.02262448732647651800 
G 0.02092142515718645500 
H 0.06495870199587520900 
I 0.06832638626586488900 
J 0.00118328558965393900 
K 0.00796545073487383260 
L 0.03678714564106335500 
M 0.02553256208071077300 
N 0.07071134182580297900 
O 0.07759211410349403600 
P 0.01653257210855475400 
Q 0.00111309068179311220 
R 0.06200383063640040700 
S 0.06269909448568859700 
T 0.09005003894146078300 
U 0.02792921679195900500 
V 0.00865068674018190480 
W 0.02356209073861756000 
X 0.00115988728703366340 
Y 0.02033479628434954300 
Z 0.00035933107595423293 
+3

您是否嘗試過的任何代碼?你有沒有搜索過? – kaylum

+3

閱讀整行內容時出現了什麼問題?你打算使用'%s'還是'%c'來讀取字符(假設你使用'scanf()')?假設在賦值給int數組之前使用'%c'將字符讀入字符,訣竅是知道'%c'不會跳過空格,例如數字之後留下的換行符閱讀,所以你需要讓'scanf()'知道跳過''%c ...'('%c'之前的空格)的空間。其餘的是微不足道的。不要忘記測試'scanf()'的返回值;如果一切正常,並且其他(0,1,EOF)如果有問題,它將是2。 –

+0

你正在閱讀文件或標準輸入嗎? – RoadRunner

回答

0

這樣

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

int main(void){ 
    int ch[32] = {0}; 
    double num[32]; 
    char word[32]; 
    int i = 0, n, flipflop = 0; 

    while(1 == scanf("%31s", word)){//read word by word 
     if(flipflop){ 
      num[i++] = atof(word); 
     } else { 
      if(*word && !word[1]){//a character 
       ch[i] = *word; 
      } 
     } 
     flipflop = !flipflop; 
    } 
    n = i; 
    for(i = 0; i < n; ++i){//test print 
     printf("%c %.20f\n", ch[i], num[i]); 
    } 
    return 0; 
}