Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2007, 01:27   #1
LinuxUser
 
Регистрация: 06.11.2007
Сообщений: 8
По умолчанию Копирование строк. Правильный ли код?

Я использую следующий код для копирования строк:

Код:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

int main()
	{char len;
	char s1[1024]="t1 t2";
	unsigned short length=strlen(s1)+1;
	char *s2=(char *)malloc(len);
	strcpy(s2,s1);
	printf("length=%i\ns1=%s\ns2=%s\n",len,s1,s2);
	free((void *)s2);
	s2=0;
	return 0;
	}
Есть ли тут ошибки, недочёты?
LinuxUser вне форума Ответить с цитированием
Старый 06.11.2007, 09:13   #2
Alek86
Форумчанин
 
Регистрация: 25.09.2007
Сообщений: 189
По умолчанию

вот тут
unsigned short length=strlen(s1)+1;
char *s2=(char *)malloc(len);
Alek86 вне форума Ответить с цитированием
Старый 06.11.2007, 12:25   #3
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

LinuxUser, а почему ты решил, что в твоей программе есть косяки? Не работает разве?

А в строке:
unsigned short length=strlen(s1)+1;

нет ничего страшного. Если, конечно, у тебя строка будет меньше 65535.
Carbon вне форума Ответить с цитированием
Старый 06.11.2007, 12:32   #4
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

А как же насчет защищенного кода ???

Ведь в таком коде потенциально много ошибок которые делают этот код не безопасным!!! Переполнение буфера... грубая очистка памяти.... и т.д.
merax вне форума Ответить с цитированием
Старый 06.11.2007, 12:48   #5
Alek86
Форумчанин
 
Регистрация: 25.09.2007
Сообщений: 189
По умолчанию

Carbon, merax а присмотреться?
Alek86 вне форума Ответить с цитированием
Старый 06.11.2007, 12:50   #6
Alek86
Форумчанин
 
Регистрация: 25.09.2007
Сообщений: 189
По умолчанию

вообще ошибка или спецальная или тупая....
Alek86 вне форума Ответить с цитированием
Старый 06.11.2007, 12:52   #7
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

А я сразу не заметил.

char len; убери, чтобы не смущало.
Carbon вне форума Ответить с цитированием
Старый 06.11.2007, 13:08   #8
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Цитата:
Сообщение от Carbon Посмотреть сообщение
А я сразу не заметил.

char len; убери, чтобы не смущало.

Аналогично блин...
merax вне форума Ответить с цитированием
Старый 06.11.2007, 15:46   #9
LinuxUser
 
Регистрация: 06.11.2007
Сообщений: 8
По умолчанию

Извеняюсь, чуток не тот код скопировал.
Изначално было length, а потом я его заменил на len.

Вот правильный код:

Код:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

int main()
	{char s1[1024]="t1 t2";
	unsigned short len=strlen(s1)+1;
	char *s2=(char *)malloc(len);
	strcpy(s2,s1);

	printf("len=%i\ns1=%s\ns2=%s\n",len,s1,s2);

	free((void *)s2);
	s2=0;
	return 0;
	}
LinuxUser вне форума Ответить с цитированием
Старый 06.11.2007, 16:09   #10
Alek86
Форумчанин
 
Регистрация: 25.09.2007
Сообщений: 189
По умолчанию

если ты есть студент, то с пивом покатит

на работу С++ программистом с таким кодом я б тя не взял

учи операторы operator new, operator delete, а также stl (можно еще обработку исключений и потоковую безопасность, но это уж для уровня "профи")
Alek86 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите правильный запрос c группировкой frostyland Microsoft Office Access 2 03.09.2008 10:22
Изобразить на экране правильный многоугольник, стороны которого окрашены в разные цвета, совершающий внут Sashka Помощь студентам 3 31.01.2008 12:02
Копирование перекрывающихся строк strncpy LinuxUser Общие вопросы C/C++ 2 01.12.2007 15:46
Сортировка в StringGrid'е, копирование строк из одного SG в другой monushka Помощь студентам 3 29.10.2007 23:54
Копирование строк Mikola Общие вопросы Delphi 8 21.09.2007 17:21