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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2009, 13:47   #1
revan-8
Пользователь
 
Регистрация: 09.07.2009
Сообщений: 15
По умолчанию программа для посчета количества символов в строке

Приветствую всех. Пишу в визуал студио 2008 программу 32 разрядную командной строки. Нехитрая программа спрашиват у юзера строку и выводит количество символов в ней. Но в коде банально при компиле возникают ошибки. Просьба помочь с кодом и помочь разобраться с эрорами.

Код:
#include <iostream>
#include <conio.h>
using namespace std;

void main()
{
char str = '';
cout << "write string";
cin >> str;

int strlen(char* p) {
	int i = 0;
	while(*p++) i++;
	return i;
}

cout << "string length " << strlen(str) << '\n';
cin.get();
}
Вообще не совсем ясно насчет указателей (я с php перехожу на с++).

Ну не могу понять зачем нужен указатесь ТИПА?? (char* p)
И если чесно вообще не ясно почему условие *p++ в функции не замкнет беспонечный цикл... (

Последний раз редактировалось MaTBeu; 26.07.2009 в 16:26.
revan-8 вне форума Ответить с цитированием
Старый 26.07.2009, 13:58   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Ошибок очень много. Во-первых нельзя определять функцию внутри другой функции. Во-вторых вы объявили char str = '' и пытаетесь в него считать строку, это неправильно. Необходимо объявить массив символов, а не один символ: char str[20]; вообще, я бы советовал почитать какую-нибудь книгу по с++, прежде чем писать программы, отличия от PHP достаточно значительны, заодно узнаете про типизацию и почему не будет бесконечного цикла
netrino вне форума Ответить с цитированием
Старый 26.07.2009, 14:02   #3
revan-8
Пользователь
 
Регистрация: 09.07.2009
Сообщений: 15
По умолчанию

Дак я читаю! Бьярн Страуструп - Язык программирования C++
Вот код
Код:
int strlen(char* p) {
int i = 0;
while(*p++) i++;
return i;
}
я оттуда и взял. пытаюсь его внедрить в жизнЬ
revan-8 вне форума Ответить с цитированием
Старый 26.07.2009, 14:04   #4
revan-8
Пользователь
 
Регистрация: 09.07.2009
Сообщений: 15
По умолчанию

во переделал вроде компилится
Код:
#include <iostream>
#include <conio.h>
using namespace std;

int strlen(char* p) {
	int i = 0;
	while(*p++) i++;
	return i;
}

void main()
{
char str[20];
cout << "write string";
cin >> str;

cout << "string length " << strlen(str) << '\n';
cin.get();
}
так это оно что больше 20 символов кушать не будет?
revan-8 вне форума Ответить с цитированием
Старый 26.07.2009, 14:05   #5
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Хм... И там нет пояснений к нему? Не похоже на Страуструпа:-) читайте дальше - всё поймете.
netrino вне форума Ответить с цитированием
Старый 26.07.2009, 14:08   #6
revan-8
Пользователь
 
Регистрация: 09.07.2009
Сообщений: 15
По умолчанию

Да пояснения есть! Просто вначале там вообще скукота, полноценных приложений нету, только куски...
в общем код вот строку кушает но длину не выводит просто закрывается окно и все а мне надо чтоб чтоб окно "застыло" и вывелась длина
Код:
#include <iostream>
#include <conio.h>
using namespace std;

int strlen(char* p) {
	int i = 0;
	while(*p++) i++;
	return i;
}

void main()
{
char str[20];
cout << "write string\n";
cin >> str;
cin.get();
cout << "string length " << strlen(str) << '\n';
cin.get();
}
revan-8 вне форума Ответить с цитированием
Старый 26.07.2009, 14:16   #7
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Можете вместо 20 больше написать) и чтобы читать строку, а не слово используйте метод getline(char* buffer, int max_len);
Код:
cin.getline(str, 20); // для данного случая.
Странн, что не застывает, по-идее должно ожидать нажатия enter. Попробуйте _getch() вместо последнего cin.get()
netrino вне форума Ответить с цитированием
Старый 26.07.2009, 14:39   #8
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Цитата:
Попробуйте _getch()
Не нужно и вообще забудьте про эту функцию и файл conio.h;
Так попробуйте
Код:
.........
           std::cin.ignore();
           std::cin.get();
	return 0;
}
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 26.07.2009, 15:06   #9
revan-8
Пользователь
 
Регистрация: 09.07.2009
Сообщений: 15
По умолчанию

Ребята вот такая вещь работает.
Код:
#include <iostream>
using namespace std;

int strlen(char* p) {
	int i = 0;
	while(*p++) i++;
	return i;
}

void main()
{
char str[100];
cout << "write string\n";
cin.getline(str, 100);
cout << "string length " << strlen(str) << '\n';
std::cin.ignore();
std::cin.get();
}
НО я хочу чтобы длина массива строки была динамической.

ЭХ жаль что нельзя присвоить
Код:
char str[] = '';
ну а там дальше наростить строку... идеи будут?
revan-8 вне форума Ответить с цитированием
Старый 26.07.2009, 15:15   #10
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

std::string
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция для подсчета количества символов в строке типа std::string a Артэс Общие вопросы C/C++ 3 06.07.2009 17:43
Удаление символов в строке. papoose Общие вопросы C/C++ 8 03.06.2009 19:22
подсчет количества символов через dll a_n_n_a Помощь студентам 14 19.05.2009 10:16
Подсчет количества заданных символов в строке Mihailo Помощь студентам 3 23.12.2007 11:58
Help! Немогу написать код для посчета и вывода результатов. Руслан БД в Delphi 2 22.12.2006 13:29