Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Почему не работает? НЕ могу понять Си

7.4K
27 мая 2007 года
Rine
85 / / 31.10.2006
 
Код:
#include <stdio.h>
#include <conio.h>

int main(){
char name[10];
gets(name);
if(name[10]=='QWERTY'){
printf("name[10]%s",name[10]);
};
}


Поправьте пожалуйста пример... нЕ могу понять систему программирования на СИ... Чтото совсем я уже...
242
27 мая 2007 года
Оlga
2.2K / / 04.02.2006
 
Код:
//if(name[10]=='QWERTY')
if(strcmp(name, "QWERTY") == 0)
  // ..
7.4K
27 мая 2007 года
Rine
85 / / 31.10.2006
OlgaKr Большое спасибо...

Хотя это наверное это очень ламерский вопрос, он так тормозил мое обучение... Кто бы мог подумать что в Си, строки(текст) представлены в виде массива... Что в остальных языках можно заменить одной переменной...
245
27 мая 2007 года
~ArchimeD~
1.4K / / 24.07.2006
И в каких это языках целая строка представляется переменной позволь спросить? По любому это указатель, хоть и не во всех языках ты об этом знаешь. В си имя массива - тоже указатель.
3
27 мая 2007 года
Green
4.8K / / 20.01.2000
Цитата: ~ArchimeD~
И в каких это языках целая строка представляется переменной позволь спросить?


Да практически во всех языках высокого уровня. В С++, например.

245
28 мая 2007 года
~ArchimeD~
1.4K / / 24.07.2006
Цитата: Green
Да практически во всех языках высокого уровня. В С++, например.


Не много не понимает моя низкоуровневая душа. Если речь идет о "пользовательской" работе со строкой, как с переменной, содержащей всю строку целиком, то тада понятно, и я немного не догнал смысл изречения, но если речь идет об организации строки в памяти и способе обращении к ней, то извините... C++ я все таки тоже знаю, хотя и не в совершенстве.

1.6K
28 мая 2007 года
Vov4ick
476 / / 01.02.2007
Видимо речь идёт о языках, где к строкам можно применять операторы вроде = == < > и подобные, а не только функции. Хотя самому перегрузить эти операторы в Ц\ЦПП не составляет большого труда, но лично я этого не лоблю (в связи с моей низкоуровневостью :)
3
28 мая 2007 года
Green
4.8K / / 20.01.2000
Речь идет о строковых классах. Как такой класс "организован в памяти" не суть важно, он может быть представден как угодно, не обязательно, как линейный блок памяти. Главное, что со строкой можно работать как с едининой сущностью.

P.S. В C операторы перегрузить нельзя в виду их отсутсвия.
P.P.S. "Низкоуровневый" - это синоним к слову "некомпетентный"? :) Не применяйте вы это слово к себе. :)
1.6K
28 мая 2007 года
Vov4ick
476 / / 01.02.2007
Низкоуровневый в связи с тем, что на Ассемблере програмлю. И на Ц\ЦПП немного. ;-)
7.4K
02 июня 2007 года
Rine
85 / / 31.10.2006
Да блин, привык я программировать на тех языках где к строкам можно применять операторы вроде = == < >... Сейчас начал изучать С и вот такие вот сложности возникли... Подскажите, вот нашей строке(массиву), можно присвоить значение когда ее инициализируешь... Потом можно каждый элемент массива отдельно:

string[0] = 'q';
string[1] = 'w';
string[2] = 'e';
string[3] = 'r';
string[4] = 't';
string[5] = 'y';
string[6] = '\0';


...НУ вот... А каким образом можно сразу дасть полное значение ну как в Qbasice например ourvar = 'qwerty'?
Спасибо за вашу помощь...
242
02 июня 2007 года
Оlga
2.2K / / 04.02.2006
Это не вопрос привычки, но нежелания взять в руки книгу и почитать главы по работе со строками. Советую воспользоваться хотя бы нашим справочником функций на форуме(смотри справа вверху страницы).

тебе нужна функция strcpy(char *, const char *)
присваивать по одному символу можно в С.
20K
04 июня 2007 года
sja
22 / / 08.01.2007
или так:

_qw char = "qwerty";

char* str = new char[7];
memset(str,0,7);
memcpy(str, _qw, strlen(_qw));

не забываем о нулях в конце строки :)
3
04 июня 2007 года
Green
4.8K / / 20.01.2000
Цитата: sja
или так:

_qw char = "qwerty";

char* str = new char[7];
memset(str,0,7);
memcpy(str, _qw, strlen(_qw));

не забываем о нулях в конце строки :)


Посмотри и никогда так не делай!

9
04 июня 2007 года
Lerkin
3.0K / / 25.03.2003
Цитата: Green
Посмотри и никогда так не делай!


Нда, это шедевр. :)

Аффтар: да поищи ты в google "инициализация строк в языке Cи". Там море информашки. В первой же десятке - всё, что тебе нужно. Что же ты разобраться-то не можешь, а?

17K
05 июня 2007 года
Roy
24 / / 04.06.2007
Цитата: Rine

string[0] = 'q';
string[1] = 'w';
string[2] = 'e';
string[3] = 'r';
string[4] = 't';
string[5] = 'y';
string[6] = '\0';


 
Код:
int main(void)
{
      char string[10]= "qwerty";
      .......
}
3
05 июня 2007 года
Green
4.8K / / 20.01.2000
Цитата: Roy
 
Код:
int main(void)
{
      char string[10]= "qwerty";
      .......
}



Why 10 ? :)
Is it magic number?

17K
06 июня 2007 года
Roy
24 / / 04.06.2007
In question he mentioned this value. Sorry of offtop.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог