#include <stdio.h>
#include <conio.h>
int main(){
char name[10];
gets(name);
if(name[10]=='QWERTY'){
printf("name[10]%s",name[10]);
};
}
Почему не работает? НЕ могу понять Си
Код:
Поправьте пожалуйста пример... нЕ могу понять систему программирования на СИ... Чтото совсем я уже...
Код:
//if(name[10]=='QWERTY')
if(strcmp(name, "QWERTY") == 0)
// ..
if(strcmp(name, "QWERTY") == 0)
// ..
Хотя это наверное это очень ламерский вопрос, он так тормозил мое обучение... Кто бы мог подумать что в Си, строки(текст) представлены в виде массива... Что в остальных языках можно заменить одной переменной...
И в каких это языках целая строка представляется переменной позволь спросить? По любому это указатель, хоть и не во всех языках ты об этом знаешь. В си имя массива - тоже указатель.
Цитата: ~ArchimeD~
И в каких это языках целая строка представляется переменной позволь спросить?
Да практически во всех языках высокого уровня. В С++, например.
Цитата: Green
Да практически во всех языках высокого уровня. В С++, например.
Не много не понимает моя низкоуровневая душа. Если речь идет о "пользовательской" работе со строкой, как с переменной, содержащей всю строку целиком, то тада понятно, и я немного не догнал смысл изречения, но если речь идет об организации строки в памяти и способе обращении к ней, то извините... C++ я все таки тоже знаю, хотя и не в совершенстве.
Видимо речь идёт о языках, где к строкам можно применять операторы вроде = == < > и подобные, а не только функции. Хотя самому перегрузить эти операторы в Ц\ЦПП не составляет большого труда, но лично я этого не лоблю (в связи с моей низкоуровневостью :)
P.S. В C операторы перегрузить нельзя в виду их отсутсвия.
P.P.S. "Низкоуровневый" - это синоним к слову "некомпетентный"? :) Не применяйте вы это слово к себе. :)
Низкоуровневый в связи с тем, что на Ассемблере програмлю. И на Ц\ЦПП немного. ;-)
string[0] = 'q';
string[1] = 'w';
string[2] = 'e';
string[3] = 'r';
string[4] = 't';
string[5] = 'y';
string[6] = '\0';
...НУ вот... А каким образом можно сразу дасть полное значение ну как в Qbasice например ourvar = 'qwerty'?
Спасибо за вашу помощь...
тебе нужна функция strcpy(char *, const char *)
присваивать по одному символу можно в С.
_qw char = "qwerty";
char* str = new char[7];
memset(str,0,7);
memcpy(str, _qw, strlen(_qw));
не забываем о нулях в конце строки :)
Цитата: sja
или так:
_qw char = "qwerty";
char* str = new char[7];
memset(str,0,7);
memcpy(str, _qw, strlen(_qw));
не забываем о нулях в конце строки :)
_qw char = "qwerty";
char* str = new char[7];
memset(str,0,7);
memcpy(str, _qw, strlen(_qw));
не забываем о нулях в конце строки :)
Посмотри и никогда так не делай!
Цитата: Green
Посмотри и никогда так не делай!
Нда, это шедевр. :)
Аффтар: да поищи ты в google "инициализация строк в языке Cи". Там море информашки. В первой же десятке - всё, что тебе нужно. Что же ты разобраться-то не можешь, а?
Цитата: 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";
.......
}
{
char string[10]= "qwerty";
.......
}
Цитата: Roy
Код:
int main(void)
{
char string[10]= "qwerty";
.......
}
{
char string[10]= "qwerty";
.......
}
Why 10 ? :)
Is it magic number?
In question he mentioned this value. Sorry of offtop.