2013-12-14 66 views
0

我是一名学生,学习C语言。对于我的任务,我有一个txt文件,我碰到的命令,如从文件中读取一行并在C中解析它

S X 11,156;21,234 

第2个字符指挥我,和我没有任何与他们的问题,他们将用很多开关解决。

这些数字很重要,我必须将它们叠加。逗号分隔属性和分号分隔主要元素。喜欢;第一个元素的第一个属性是11,第二个元素的第一个属性是76等。我可以将这些属性放到2个不同的堆栈中。

我将在稍后处理第一个属性,因此第一个属性必须是10-99之间的浮点类型。第二个属性是100-999之间的整数。

属性将随机给出,我不知道有多少元素,但我相信最多会有20个元素。

结构是不允许的(我甚至不知道它们是什么),所以我必须用字符串创建一个堆栈。

我是新来的“堆栈”概念,所以我无法自己创建它。那么你能帮我用这些数字创建一个堆栈吗?

(我搜索的网站很多次,但我找不到任何匹配的问题。)

我试图创建2个字符串的属性和使用strncat函数功能添加数字,但我所能做的就是让数字为'1','1','4'等,但它失败了,因为我需要这些数字为“11”,“156”等。我怎样才能得到这样的数字?

我试过的是;

strncat (str1, row+x, 2); 
    strncat (str2, row+x+2, 3); 
    strcat (str1, ", "); 
    strcat (str2, ", "); 
+0

**结构是不允许的(我甚至不知道他们是什么),所以我必须创建一个堆字符串**这句话中的矛盾在哪里。除了你写的代码。 )从星期日起改变) –

+0

我并没有完全理解你(我的英语不太好),但无论如何,我更新了这个问题。 – user3080477

回答

0

显然,鉴于这是一所学校的分配,人们不会交给你的答案,但可以指出您诠释正确的方向。

这里有很多概念,你应该学会或应该学会完成作业。这些是文件和输入处理,数据结构(特别是堆栈)。

你应该打破这些并学习每一个。您可以了解堆栈数据结构在这里Stack (abstract data type)

+0

是的,这是一个学校作业,我说我是一个初学者。这只是作业的一小部分,而不是全部。无论如何,我明白你的观点。 – user3080477

+0

更新了问题并缩小了我的请求。也许你现在可以帮助我? :) – user3080477

+0

好吧,回到文件和输入处理,你显然可以从文件中读取,所以现在你可能想在这里和其他关于字符串解析的地方寻找答案。这应该让你下一步。 – crad

0

我一直再寻找一些答案,“sscanf的”似乎有用 ,但我怎么也找不到结束变量极限; 的sscanf( “SX %d,%d; & d .............” & VAR1,VAR2 &,& VAR3)等,但我怎样才能 理解如果只有4变量?还是应该写变量的最大数量 ?

两种方式都是可行的:

int a[20][2]; // max. 20 elements with 2 attributes 
// scanf("S X"); 
for (nelem = 0; scanf("%d,%d", &a[nelem][0], &a[nelem][1]) == 2;) 
{ 
    nelem++; // We have read one more element's attributes 
    if (getchar() != ';') break; 
} 

int a[20][2]; // max. 20 elements with 2 attributes 
nelem = 
    scanf("S X%d,%d;%d,%d;%d,%d;%d,%d;%d,%d;%d,%d;%d,%d;%d,%d;%d,%d;%d,%d;" 
      "%d,%d;%d,%d;%d,%d;%d,%d;%d,%d;%d,%d;%d,%d;%d,%d;%d,%d;%d,%d " 
    , &a[ 0][0], &a[ 0][1], &a[ 1][0], &a[ 1][1], &a[ 2][0], &a[ 2][1], &a[ 3][0], &a[ 3][1] 
    , &a[ 4][0], &a[ 4][1], &a[ 5][0], &a[ 5][1], &a[ 6][0], &a[ 6][1], &a[ 7][0], &a[ 7][1] 
    , &a[ 8][0], &a[ 8][1], &a[ 9][0], &a[ 9][1], &a[10][0], &a[10][1], &a[11][0], &a[11][1] 
    , &a[12][0], &a[12][1], &a[13][0], &a[13][1], &a[14][0], &a[14][1], &a[15][0], &a[15][1] 
    , &a[16][0], &a[16][1], &a[17][0], &a[17][1], &a[18][0], &a[18][1], &a[19][0], &a[19][1] 
     )/2; // number of elements is half the number of attributes read 
相关问题