2016-11-18 61 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; 
}