2010-09-27 3 views
2

У меня есть замкнутый цикл, и мне нужно преобразовать вывод, который я получаю в строку. Как мне это сделать?string concatenation

например. мой цикл дает сотни значений чисел, как:

 
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 и так далее.

В основном каждое значение необходимо преобразовать из целого в строку.

+8

Попробуйте затем спросить. – 2010-09-27 00:13:58

+0

предлагаю вам опубликовать код или подобное, чтобы дать потенциальным ответчикам понимание того, что у вас уже есть. –

ответ

-1

Вам необходимо изучить методы itoa и .

+2

-1 для 'itoa' и для вызова методов C-функций. –

3

Поскольку это домашнее задание, я не буду публиковать полный код, просто некоторые советы: функции, которые вы ищете, - это snprintf, безопасная версия sprintf. Преимущество состоит в том, что вы также можете выполнять конкатенацию и точки с ней.

В качестве альтернативы вы можете комбинировать itoa и strncat, но itoa не является стандартной функцией.

+0

+1 для 'sprintf()' –

+1

'itoa' не является стандартной функцией C. – caf

+2

'strtol' - стандартизированная функция для интерпретации текстовых представлений чисел. – dreamlax

0

Если они являются целыми числами, вы можете использовать itoa и просто присоединить этот результат к массиву символов достаточного размера с помощью strcat.

Примечание: itoa является нестандартным, но он также широко распространен и широко используется и поставляется в качестве нестандартного расширения библиотеки многими поставщиками. Имейте в виду, что это означает, что незначительные вариации на нестандартное поведение могут вызвать серьезные проблемы в реальных приложениях. Если, однако, вы пишете домашнее задание для одной платформы, вы, вероятно, не столкнетесь с такими проблемами. Важно знать об этом и знать, что он не встанет в реальном мире (не предоставление этого предупреждения было дефектом в исходном ответе).

Другие методы существуют, snprintf является главным (с преимуществом стандартного поведения), но с целью простого упражнения я решил направить вас к простейшим методам.

Существуют потенциальные проблемы с некоторыми широко распространенными реализациями itoa, которые могут возникать в случаях краев, но вероятность того, что это происходит с 3-значными положительными целыми числами, является ... Slim.

Независимо от того, прочитайте на snprintf, поскольку он, вероятно, более полезен в ваших исследованиях C, или если ваша среда поддерживает его, рассмотрите возможность изучения C++ и Boost, поскольку мой первый комментарий указывает на менее подверженное ошибкам решение на этом языке. C++ имеет преимущество, позволяющую использовать безопасный тип специализированного метода, в котором snprintf можно легко использовать (как и любое использование ... и полагаться на строку формата).

+0

Вторая ссылка сделана - надеюсь, что вы не возражаете;) – schnaader

+0

Спасибо :) Чтобы изложить комментарий (я был отключен 3 символа с «спасибо») Я также упомянул, что в C++ к этому можно подойти с boost: : lexical_cast и базовая конкатенация строк через std :: string и operator +, и для этого не будет риска переполнения или сложного распределения памяти. – M2tM

+0

-1 для 'itoa', который не является частью языка C. Используйте 'snprintf'. –

-2

Если вам просто нужен выход, вы можете сделать это без конкатенации. Распечатайте каждое целое число и точку (.), за исключением последнего целого числа. Псевдокод:

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

Не похоже на код C для меня ... – schnaader

+0

@shnaader: аналогично вам, ответ не содержит реального кода для этого явно HW-вопроса. в чем проблема? –

+0

Это псевдокод. Указывается в ответе. Почему я даю полный рабочий код? – Donotalo