доброго времени и суток !!!
Я хотел спросить что дают скобки после имени метода и как создать переменную string в си (чистом си).
заранее спасибо.
(давно мучают эти вопросы)
String и скобки
Я хотел спросить что дают скобки после имени метода
1. Это функция называется. Методы в C++.
2. ничего не дают. Это просто синтаксис. В паскале вот пишут begin, end. В bash'е пишут вот так:
case a in b
...
esac
if command; then
...
fi
ну а в C блок (несколько операторов) отделяют скобками.
например
if(УСЛОВИЕ)
{
ОПЕРАТОР1;
ОПЕРАТОР2;
}
оба оператора выполняются тогда, и только тогда, когда УСЛОВИЕ истинно (т.е. не равно нулю в C).
как создать переменную string в си
никак.
Можно только сделать массив из символов.
const char str[] = "test string";такой массив имеет тип char*, оканчивается символом \0, и его нельзя менять.
Можно сделать массивы и так, что-бы их содержимое можно было менять (но не размер)
char str2[256];PS: сейчас набегут тролли, и скажут, что размер менять можно. Я знаю. В новом стандарте иногда можно. Но не нужно.
PPS: да, ещё можно выделить память функцией malloc(3) и потом удалить free(3).
PPPS: сейчас набигут... Короче, если кто набижать хочет -- лучше расскажите сами.
Хм...
А с библиотеками можно как-то создать строковую переменную в си ?
нет.А с библиотеками можно как-то создать строковую переменную в си ?
А на c++
можно сделать свою структуру (struct) string, и написать кучу функций для обработки этой структуры.
ещё можно считать строкой указатель на символ. С двумя допущениями:
1. это не просто указатель на символ, а указатель на массив, который имеет достаточный для строки размер.
2. строка оканчивается на \0, и в ней нет символов \0. И размер массива достаточен не только для строки, но и для \0 в конце.
тогда с такими "строками" можно юзать библиотеку glibc, и все функции, перечисленные в третьем разделе man pages. Например
Показать
NAME
strcpy, strncpy - copy a string
SYNOPSIS
#include <string.h>
char *strcpy(char *dest, const char *src);
char *strncpy(char *dest, const char *src, size_t n);
DESCRIPTION
The strcpy() function copies the string pointed to by src, including the terminat-
ing null byte ('\0'), to the buffer pointed to by dest. The strings may not over-
lap, and the destination string dest must be large enough to receive the copy.
Beware of buffer overruns! (See BUGS.)
The strncpy() function is similar, except that at most n bytes of src are copied.
Warning: If there is no null byte among the first n bytes of src, the string placed
in dest will not be null-terminated.
If the length of src is less than n, strncpy() writes additional null bytes to dest
to ensure that a total of n bytes are written.
А на c++
а на C++ есть стандартная STL, в которой есть нужный вам std::string. Но можно сделать и свой, с картами и девочками.
Можно поточней ?
viva_linuxoid, думаю -- не нужно. Тема C++ очень сложна, и у меня нет времени её раскрывать. Да и здешние вахтёры наверное скоро меня опять забанят...
Ладно...
не. не забанили пока. Продолжаем веселье.
И да, C++ всё равно не рекомендую. Что вам в сишечке не нравится? Char* вполне годная замена стрингов. Сам Линус юзает, и нахваливает. И шлёт всех к такой-то матери, кто пожелает C++, или прочую ересь.