2016-11-14 91 views
-3

我有这样的.txt文件只包含:采取特定数量从C程序中一个txt文件

THN1234 54 

我怎么能只拿54号,将其从其余部分隔离,并使用它作为我的程序中的整数变量?

+0

这个问题根本没有意义。没有一个普遍的问题,因为你可能还没有丝毫的想法。那么你不能在这里问!你应该写一些代码,如果它失败了,你来找SO并提问,发布代码并说我认为这应该做X但是它在做Y,你能帮我找到问题吗? –

+3

'fscanf(fp,“%* s%d”,&value);' – BLUEPIXY

+1

欢迎使用堆栈溢出。 请注意,在这里说'谢谢'的首选方式是通过 提高投票的好问题和有用的答案(一旦你有足够的声誉这样做),并接受任何 问题最有用的答案,你问(这也给你一个小小的提升,以你的声望 )。 请参阅[关于]页面,以及[如何在此处提问 ?]和 [当有人回答我的 问题时,我该怎么办? ?](http://stackoverflow.com/help/someone-answers) –

回答

0

如果输入是从标准输入,那么你可以使用:

int value; 

if (scanf("%*s %d", &value) != 1) 
    …Oops - incorrectly formatted data… 
…use value… 

%*s读取,但丢弃可选的前导空格和一个或多个非空白(THN1234)的序列;空白跳过更多可选空白; %d读取整数,在输入缓冲区中留下换行符。如果空白后面的内容不能转换为数字,或者如果您获得EOF,则可以在if条件中检测到它,并在if的正文中报告。

嗯......我看到BLUEPIXY表示comment基本上一样(减去解释),甚至下降到整数变量名的选择。

+0

非常感谢。你的回答非常有帮助。 –

0

哇。自从我使用C以来已经很长时间了。然而,我认为在这种情况下,C和C++的答案是相似的。您可以使用strtok_r将字符串拆分为令牌,然后将第二个令牌解析为int。请参阅http://www.cplusplus.com/reference/clibrary/cstring/strtok/

您可能也想看看this问题。

+0

当我的答案是'strtok()'时,它让我很担心 - 它不是第一个想到的替代方案,不仅仅是因为它仍然留下了'转换为'int''撤消。 –

+0

是的。但我们在这里说C。问题包括忽略字符串的初始部分,所以我不想以sscanf或等价的方式开始。 – melston