Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
SlesherY
6 / 6 / 1
Регистрация: 14.11.2011
Сообщений: 54
#1

проблема с передачей параметра функции - C++

14.11.2011, 13:12. Просмотров 1712. Ответов 41
Метки нет (Все метки)

Здравствуйте. Изучил уже 6 языков программирования, но С++ не дается как-то так просто.
Вот есть например часть кода.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <cstring>
#include <stdio.h>
#include <iostream>
#include <Windows.h>
 
int convert (){
char str[] = "Фізика";
char qwe[] = "";
   char c = 'і';
   char *p;
   int result;
   printf( "String :      %s\n", str );
   printf( "Search char:   %c\n", c );
   p = strchr( str, c );
   result = (int)(p - str + 1);
   if ( p != NULL )
      printf( "Result :   first %c found at position %d\n", 
              c, result );
   else
      printf( "Result :   %c not found\n" );
   *strchr( str, c ) = 'i';
   CharToOem(str, qwe);
   printf( "New String :      %s\n", qwe );
   int a;
   std::cin>>a;
    return 0;
}
 
int main() {
    convert();
}
если же сделать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int convert [B](char str[])[/B]{
char qwe[] = "";
   char c = 'і';
   char *p;
   int result;
   printf( "String :      %s\n", str );
   printf( "Search char:   %c\n", c );
   p = strchr( str, c );
   result = (int)(p - str + 1);
   if ( p != NULL )
      printf( "Result :   first %c found at position %d\n", 
              c, result );
   else
      printf( "Result :   %c not found\n" );
   *strchr( str, c ) = 'i';
   CharToOem(str, qwe);
   printf( "New String :      %s\n", qwe );
   int a;
   std::cin>>a;
    return 0;
}
 
int main() {
    [B]convert("Фізика");[/B]
}
то идет ошибка:
Первый этап обработки исключения в "0x0080110a" в "code.exe": 0xC0000005: Нарушение прав доступа при записи "0x008058bd".
Необработанное исключение в "0x0080110a" в "code.exe": 0xC0000005: Нарушение прав доступа при записи "0x008058bd".
Первый этап обработки исключения в "0x0080110a" в "code.exe": 0xC0000005: Нарушение прав доступа при записи "0x008058bd".
Необработанное исключение в "0x0080110a" в "code.exe": 0xC0000005: Нарушение прав доступа при записи "0x008058bd".
2. Может есть какой-то способ заставить консоль воспринимать украинскую букву "і"? А то приходиться заменять ее на английский аналог.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17011 / 5416 / 335
Регистрация: 30.03.2009
Сообщений: 14,660
Записей в блоге: 26
14.11.2011, 21:13     проблема с передачей параметра функции #41
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Evg, простите но здесь с вами не соглашусь
Ага, забыл написать, что это только для чтения. Просто приводил пример как из одного получить другое
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2011, 19:19     проблема с передачей параметра функции
Еще ссылки по теме:

C++ Передача параметра функции
C++ Функции в зависимости от параметра
Вернуть 2 параметра из функции C++
C++ Динамические массивы с передачей в функции
C++ Передача функции в качестве параметра функции

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
SlesherY
6 / 6 / 1
Регистрация: 14.11.2011
Сообщений: 54
17.11.2011, 19:19  [ТС]     проблема с передачей параметра функции #42
да, еще одна проблема.
вобщем, сейчас у меня конвертер в кирилицу примерно такой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void put_mes(string er) {
    string res;
    res = convert(er);
    cout<<res.c_str()<<endl;
}
 
inline std::string replace(std::string text, std::string s, std::string d)
{
  for(unsigned index=0; index=text.find(s, index), index!=std::string::npos;)
  {
    text.replace(index, s.length(), d);
    index+=d.length();
  }
  return text;
}
 
string convert (string str)
{
        char * buf = new char[str.length() + 1];
        size_t found;
        str = replace(str, "і", "i");
        str = replace(str, "І", "I");
        CharToOem(str.c_str(),buf);
        return buf;
        str = buf;
        delete [] buf;
}
если выводить нормально переменную через
C++
1
2
str = "Успіх!";
    put_mes(str);
то все ок.
потом хочу считать переменную и вывести:
CSS
1
2
3
   getline(cin, question);
   cout<<question<<endl;
   put_mes(question);
вот что получается: смотрим скриншот.
вторая строка - єто гетлайн, третья - єто цаут, главное, нормально выводит значение переменной, а вот уже если выводить через ф-ю, то она не работает. По мне, нелогично. Жду мыслей.
Миниатюры
проблема с передачей параметра функции  
Yandex
Объявления
17.11.2011, 19:19     проблема с передачей параметра функции
Ответ Создать тему
Опции темы

Текущее время: 04:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru