字符串连接

时间:2010-09-27 00:11:19

标签: c

我有一个嵌套的for循环,我需要将输出转换为字符串。我该怎么做?

e.g。我的循环给出了数百个数字值,如:

192 168 11 248
192 168 11 249
192 168 11 250
192 168 11 251
192 168 11 252
192 168 11 253
192 168 11 254
192 168 11 255

如何将每个值连接为192.168.11.248等等。

基本上每个值都需要从整数转换为字符串。

4 个答案:

答案 0 :(得分:3)

由于这是作业,我不会发布完整的代码,只是一些提示:您正在寻找的功能是snprintfsprintf的安全版本。它的优点是你也可以用它来连接和加点。

或者,您可以合并itoastrncat,但itoa不是标准函数。

答案 1 :(得分:0)

如果它们是生成的整数,您可以使用itoa并简单地将该结果附加到具有strcat的足够大小的字符数组。

注意:itoa是非标准的,但它也是广泛使用的,并且是许多供应商提供的非标准库扩展。请记住,这意味着非标准行为的微小变化可能会在现实世界的应用程序中造成重大问题。但是,如果您正在为一个平台编写家庭作业,则可能不会遇到此类问题。重要的是要意识到这一点并且知道它不会在现实世界中站起来(不提供此警告是原始答案中的缺陷)。

存在其他方法,snprintf是主要方法(具有标准行为的优势),但为了简单的练习,我选择引导您使用最简单的方法。

itoa的一些广泛实现存在潜在的问题,这些问题可能会出现在边缘情况下,但3位正整数发生的可能性是...... Slim。

无论如何,请阅读snprintf,因为它可能在您的C学习中更有用,或者如果您的环境支持它,请考虑调查C ++和Boost,因为我的第一条评论指出了一个不太容易出错的解决方案。那种语言。 C ++的优点是允许使用类型安全的方法来专门化转换,其中snprintf很容易被滥用(就像任何使用...并依赖于格式字符串一样)。

答案 2 :(得分:-1)

您需要查看itoastrncat方法。

答案 3 :(得分:-2)

如果您只需要输出,则无需连接即可完成。打印每个整数和一个点(.),最后一个整数除外。伪代码:

Print 192 "."
    Print 168 "."
        Print 11 "."
            Print 249 "\n"