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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача и использование строки в аргументе, задача на чистом си 
V
    Опции темы
mr.Anderson
Дата 10.9.2008, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Так. Работа со строками в Си очень сложная штука, особенно после паскаля. Написал вот такой код:
Код

#include <stdio.h>
#include <string.h>

char * somefunc(char * s)
{
 char * res;
 printf("%d", strlen(s));
 res = *res + "1234"; //должно получиться 1234
 return res;
}

void main(void)
{
 char * mystr;
 scanf("%s", &mystr); //пробовал и без знака ссылки, и со знаком указателя - ноль эмоций
 printf(somefunc(mystr)); //то же самое
}

Но программа упорно не работает. Я уже где только ссылки и указатели ни ставил, бесполезно. Во-первых, строка не считывается. Во-вторых, стрлен не считается. И, по-моему, аргумент толком не передается в функцию. Поясните, пожалуйста, теорию по этим вопросам.

Добавлено через 30 секунд
ЗЫ компилятор BCC 3.1.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
vinter
Дата 10.9.2008, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Код

#include <stdio.h>
#include <string.h>

char * somefunc(char * s)
{
 char * res = new char[10];// тут будет утечка, лучше сделать в стекек
res[0] = '\0';
 printf("%d", strlen(s));
 strcat(res, "1234"); //если ниче не путаю, этими ф-иями никогда не пользовался
 return res;
}

void main(void)
{
 char * mystr = new char[256];// кто будет память выделять?
 scanf("%s", mystr); //это не знак ссылки, это операция взятия адреса, и она тут не нужна
 printf(somefunc(mystr)); //то же самое
delete [] mystr;
}

Андерсон, читай книжки, наскоком С не берется smile


--------------------
Мой блог
PM MAIL WWW   Вверх
mr.Anderson
Дата 10.9.2008, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



vinter, ага, я уже заметил. Спасибо, сейчас попробую.

Добавлено через 5 минут и 8 секунд
Ага, все получилось, спасибо!


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
taiven
Дата 10.9.2008, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

char * res = new char[10];

это уже не С это С++.
PM   Вверх
vinter
Дата 10.9.2008, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Цитата(taiven @  10.9.2008,  21:21 Найти цитируемый пост)
это уже не С это С++.

и?


--------------------
Мой блог
PM MAIL WWW   Вверх
mr.Anderson
Дата 10.9.2008, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



taiven, елки, а ведь и точно. А на си как?


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
vinter
Дата 10.9.2008, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



char * res = (char*) malloc(sizeof(char)*10);
...
free(res);


--------------------
Мой блог
PM MAIL WWW   Вверх
mr.Anderson
Дата 10.9.2008, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



vinter, дык я ж в подписи к теме указал, чистый си. У меня компилятор-то проглотил ваш код, ибо он Borland C++ все же. Но нужно чистый Си.

Добавлено через 11 секунд
Ага, спасиб.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
vinter
Дата 10.9.2008, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


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

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



Цитата(mr.Anderson @  10.9.2008,  21:32 Найти цитируемый пост)
дык я ж в подписи к теме указал, чистый си

jr? я просто подписи к темам редко читаю, сорри smile


--------------------
Мой блог
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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