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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2009, 12:54   #1
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию Си Строковые данные

Во общем что-то я не понимаю... помогите пожалуйста
Код:
#include <stdio.h>
main()
{
   char b;
   printf("%s","Введите слово: ");
   scanf("%s",&b);
   printf("%s%s\n","Введенное  слово - ", &b);/*тут выдает то что ввел...*/
   if (b=="qwer")
   printf("%s","Введите слово qwer"); /* как ни странно при вводе qwer оно не равно... дк что тут не так?*/
   else
   printf("%s%s","Введите слово не qwer, a  ",&b);
}
dampirik вне форума Ответить с цитированием
Старый 12.07.2009, 13:07   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Может быть вот так?
Код:
#include <stdio.h>
void main()
{
   char b;
   printf("Введите слово: ");
   scanf("%s",&b);
   printf("%s\nВведенное  слово - ", &b);
   printf("\nВведите слово qwer: "); 
   scanf("%s\n", &b);
   if (b=="qwer")
   {
     // какие-то действия. Непример
     printf("Вы ввели верно (%s)\n", &b);
   }
   else
   {
     printf("Введите слово не qwer, a  ");
     scanf("%s\n", &b);
   }
}
psycho-coder вне форума Ответить с цитированием
Старый 12.07.2009, 13:14   #3
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

У вас полно ошибок. Я так понял вам нужно сравнить введенную строку с уже известной.

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

int main()
{
clrscr();

char *s;

s=new char[30];

printf("Vvedite text:");
scanf("%s",s);
printf("Vash text: %s",s);

int i=stricmp(s,"qwer");

if(i==0)
printf("\nDa");
else
printf("\nNet");

delete []s;

getch();
return 0;
}

Последний раз редактировалось profi; 12.07.2009 в 13:20.
profi вне форума Ответить с цитированием
Старый 12.07.2009, 13:32   #4
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Цитата:
Сообщение от psycho-coder Посмотреть сообщение
Код:
void main()
Главная ваша ошибка. Функция main обязательно должна возвращать значение типа int.

Так
Код:
int main()
{
......
return 0;
}
и
так

Код:
int main(void)
{
......
return 0;
}
Верно.

А так

Код:
void main()
{
......
}
Нет.
profi вне форума Ответить с цитированием
Старый 12.07.2009, 13:46   #5
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Цитата:
Сообщение от profi Посмотреть сообщение
У вас полно ошибок. Я так понял вам нужно сравнить введенную строку с уже известной.
Да вы правильно меня поняли...но есть вопросы по коду...
Цитата:
Сообщение от profi Посмотреть сообщение
Код:
#include<stdio.h>
#include<string.h>
#include<conio.h>

int main()
{
clrscr(); // это как я понял очищает экран...

char *s;//поясните пожалуйста вот в этом месте...

s=new char[30];//поясните пожалуйста вот в этом месте...

printf("Vvedite text:");
scanf("%s",s);
printf("Vash text: %s",s);

int i=stricmp(s,"qwer");//поясните пожалуйста вот в этом месте...

if(i==0) // и почему нулю..
printf("\nDa");
else
printf("\nNet");

delete []s; //поясните пожалуйста вот в этом месте...

getch();
return 0;
}
чтобы понять как можно глубже...
dampirik вне форума Ответить с цитированием
Старый 12.07.2009, 13:50   #6
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Цитата:
clrscr(); // это как я понял очищает экран...
Да.
Цитата:
char *s;//поясните пожалуйста вот в этом месте...

s=new char[30];//поясните пожалуйста вот в этом месте...
Динамически выделяем память под строку.

Цитата:
int i=stricmp(s,"qwer");
Сравниваем введеную строку со строкой qwer если они равны функция stricmp возвращает 0 и присваивает переменной i. Если i==0 тогда строки равны.

Цитата:
delete []s;
- удаляем динамическую память, которую выделяли под строку.
profi вне форума Ответить с цитированием
Старый 12.07.2009, 14:00   #7
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

2profi:
Ну почему же, C вполне допускает void main(){}
И потом, насколько я понял dampirik пишет на С, а не на С++, так что лучше вместо new/delete использовать malloc/free, или статическое выделение памяти.

2dampirik:
Код:
#include <stdio.h>

void main()
{
	char b[20];

	printf("Vvedite slovo: ");
	scanf("%s", b);
	printf("Vy vveli: %s\n", b);
	if(!strcmp(b,"qwer"))
		printf("Vvedite slovo qwer\n");
	else
		printf("Vvedite ne slovo qwer\n");
}
netrino вне форума Ответить с цитированием
Старый 12.07.2009, 14:01   #8
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

спасибо!Понял хоть где и что искать и как...
А в памяти что храниться... вместо слова тогда? почему не идет простое сравнение... переменных типа b="qweqw"
ЗЫ strcmp(cs,st) (Вы опечатались...) сравнивает cs и ct; возвращает <0, если cs<ct; 0, если cs==ct; и >0, если cs>ct (I.B.: вообще-то, функция возвращает int)
dampirik вне форума Ответить с цитированием
Старый 12.07.2009, 14:02   #9
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

2profi В винде можно и так. А вот в никсах уже нет. Там с этим все строго, как и в любых правильных осях.
psycho-coder вне форума Ответить с цитированием
Старый 12.07.2009, 14:04   #10
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Библиотека stdio.h вполне может обеспечить операторами new/delete и функциями malloc/free для работы с динамической паматью. В данном типе задачи без разницы. Но конечно операторы new/delete и функции malloc/free по разному работают с объектами.

return 0; означает, что функция main возращает управление ОС.
Цитата:
ЗЫ strcmp(cs,st) (Вы опечатались...)
Я не опечатался.

Последний раз редактировалось profi; 12.07.2009 в 14:17.
profi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строковые Маруська Помощь студентам 3 21.06.2009 17:31
Delphi: строковые операции Sianessa Помощь студентам 6 21.04.2009 18:05
Строковые переменные NightFire Помощь студентам 1 23.03.2009 06:20
Строковые процедуры Cannibal Паскаль, Turbo Pascal, PascalABC.NET 2 29.05.2008 12:42
Строковые типы SunKnight Общие вопросы Delphi 8 07.05.2008 15:46