LINUX.ORG.RU

КАК В ЛИНУХЕ РАБОТАТЬ С char *


0

0

Я тут попытался написать что-нибудь на С++ под Linux, а он пишет "Segmentation fault". Вроду как Линух некорректно работает с char *, а вопринимает только массивы char. Так ли это? Если так, то как быть с опреацией присвоения (char * можно присвоить char *, а вот с массивами такоцй номер не пройдет). Перегружать?

anonymous

Чего курил?

Аааа! Поди, написал чего-то типа

char* msg;
scanf("%s",msg);
printf("Hello, %s",msg);

Было такое?

Flogger_d
()

RE:

> Я тут попытался написать что-нибудь на С++ под Linux, а он пишет "Segmentation fault". Вроду как Линух некорректно работает с char *, а вопринимает только массивы char. Так ли это?

Нет, не так.

>...как быть с опреацией присвоения (char * можно присвоить char *, а вот с массивами такоцй номер не пройдет). Перегружать?

Чего перегружать? Что касается массивов - в C/C++ они не копируются оператором присвоения, только поэлементно. Для копирования asciiz строк (char*) в C используются ф-ии strcpy, memcpy и т.п. В C++ для работы со строками используется класс std::string, который способен конструироваться из asciiz и предоставлять своё содержимое в виде const char* методом c_str.

Лучше дай исходник - можно будет сказать точнее, где крамола.

А ещё лучше - прочти хорошую книгу по программированию на C.

loki
()
Ответ на: RE: от loki

Я знаю функции работы со строками (char *). Я хотел спросить, работают ли с char * в Линухе так же, как и в Винде?. В том то и дело, что я знаю как работать со строками (strcpy. strncpy, strcat, strncat и т.п.), но програ выдает в какой то момент "Segmentation fault".

anonymous
()
Ответ на: комментарий от Dead

Просто в DOS/Windows ошибочная работа с памятью не очень критична, а в линухе - сразу segmentation fault... Я тоже вначале офигевал, когда переходил, но довольно быстро разобрался, понял, что мало что понимал в работе со строками...

anonymous
()
Ответ на: комментарий от anonymous

GNU C Library

вот что я советую читать что б не морочить людям голову

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.