Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Склеить вде строки 
V
    Опции темы
icepro
Дата 18.4.2008, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Понимаю это уже спрашивали 100 раз, но у меня немного не стандартный случай.
Пишу консольную программу, она дожна брать параметры из коммандной строки,
типа: void main(int argc, char* argv[])
проблема состоит в том что у меня есть переменная типа char* и мне в нее нужно добавить еще две такие же, тоесть
есть char* f_param;
и мне нeжно сделать так что б она была такого вида f_param="argv[2]_argv[3]"
Понимаю это елементарная конкатенация, но компилер(студия 2005) то и дело выдает ошибку, про невозможность конвертации чар в чар* и ну и т.п.
Дайте пожалуйста робочий код!
Заранее спасибо!


PM MAIL   Вверх
just_geek
Дата 18.4.2008, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 13.12.2007

Репутация: 1
Всего: 10



показал бы код, для начала smile
PM MAIL   Вверх
Andrey44
Дата 18.4.2008, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 2
Всего: 26



Код

char* f_param = _malloca(sizeof(argv[2])+sizeof(argv[3])+1);
sprintf(f_param, "%s%s", argv[2], argv[3]);



--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
creatorcode
Дата 18.4.2008, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 12.6.2006
Где: Ленинград

Репутация: 1
Всего: 4



Цитата(Andrey44 @  18.4.2008,  12:41 Найти цитируемый пост)
char* f_param = _malloca(sizeof(argv[2])+sizeof(argv[3])+1);

sizeof(argv[2]) вернет размер указателя, а не длину строки. Поэтому надо использовать strlen(argv[2])

Это сообщение отредактировал(а) creatorcode - 18.4.2008, 13:04
PM MAIL   Вверх
Andrey44
Дата 18.4.2008, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 2
Всего: 26



creatorcode, согласен smile что-то я протупил немного


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Graf_h
Дата 18.4.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: нет
Всего: 5



Код

#include <sтring.h>
char strcat(char *str1, const char *str2);

Функция strcat() присоединяет к строке str1 копию строки str2 и завершает строку str1 нулевым символом. Конечный нуль-символ, первоначально завершающий строку str1, перезаписывается первым символом строки str2. Строка str2 при этом не изменяется!

Код

#include <sтring.h>
char strncat(char *str1, const char *str2, size_t count);

Функция strncat() присоединяет к строке, адресуемой параметром str1, не более count символов строки, адресуемой параметром str2, завершая "результирующую" строку str1 нулевым символом

Вот так  smile 


Это сообщение отредактировал(а) Graf_h - 18.4.2008, 15:28


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
creatorcode
Дата 18.4.2008, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 12.6.2006
Где: Ленинград

Репутация: 1
Всего: 4



Graf_h, тогда придется использовать и strcpy
Код

strcpy(f_param,argv[2]);
strcat(f_param,argv[3]);


PM MAIL   Вверх
baldina
Дата 18.4.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



Код

char* f_param = _malloca(strlen(argv[2])+strlen(argv[3])+2);
sprintf(f_param, "%s_%s", argv[2], argv[3]);
подчеркивание забыли
PM MAIL   Вверх
Graf_h
Дата 18.4.2008, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: нет
Всего: 5



creatorcodesmile 
Может стоит человеку рабочий код написать, пусть не парится?


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
creatorcode
Дата 18.4.2008, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 12.6.2006
Где: Ленинград

Репутация: 1
Всего: 4



Graf_h, почему бы и нет? smile
Вариант Andrey44:
Код

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char* argv[])
{
    char* f_param=malloc(strlen(argv[2])+strlen(argv[3])+2);
    sprintf(f_param, "%s_%s", argv[2], argv[3]);
    printf("%s\n",f_param);
}

Ваш вариант:
Код

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char* argv[])
{
    char* f_param=malloc(strlen(argv[2])+strlen(argv[3])+2);
    strcpy(f_param,argv[2]);
    strcat(f_param,"_");
    strcat(f_param,argv[3]);
    printf("%s\n",f_param);
}

PM MAIL   Вверх
Graf_h
Дата 18.4.2008, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: нет
Всего: 5



creatorcode,  smile ! но есть ошибки  smile return 0 пропустили?

Это сообщение отредактировал(а) Graf_h - 18.4.2008, 17:31


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
creatorcode
Дата 18.4.2008, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 12.6.2006
Где: Ленинград

Репутация: 1
Всего: 4



Graf_h, это не ошибки smile 
return 0 в main необязателен.
P.S. Мой вариант:
Код

#include <iostream>
#include <string>
int main(int argc,char* argv[])
{
    std::string f_param(argv[2]);
    f_param.push_back('_');
    f_param+=argv[3];
    std::cout<<f_param<<std::endl;
}

PM MAIL   Вверх
Graf_h
Дата 18.4.2008, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: нет
Всего: 5



creatorcode Graf_h, это не ошибки  
warning'main' : function should return a value; 'void' return type assumed
Linking...



creatorcode, STL рулит  smile  smile 


Это сообщение отредактировал(а) Graf_h - 18.4.2008, 17:41


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
creatorcode
Дата 18.4.2008, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 12.6.2006
Где: Ленинград

Репутация: 1
Всего: 4



Цитата(Graf_h @  18.4.2008,  17:38 Найти цитируемый пост)
warning'main' : function should return a value; 'void' return type assumed

Всё-таки warning, а не error. К тому же, смотря чем компилить.
P.S. А STL действительно рулит  smile
PM MAIL   Вверх
warmonger_
Дата 18.4.2008, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.7.2007
Где: г. Киев

Репутация: 1
Всего: 3



Цитата(creatorcode @  18.4.2008,  16:34 Найти цитируемый пост)
return 0 в main необязателен.

если писать не по стандарту...
--------------------
Make everything as simple as possible, but not simpler.Albert Einstein
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0892 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.