0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 34
1

Передачи данных в функцию

24.05.2013, 16:20. Показов 473. Ответов 2
Метки нет (Все метки)

Здравствуйте проблема вот в чем. После оформления части программы в прототип функции (scan_name) символьный массив передает в main() "крокозябры", а после повторного запуска пишет ошибку:
Not enough memory.
C++ (Qt)
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
32
33
34
35
36
37
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <string.h>
void scan_name(char ch_n[255]);
char main(void)
{
 clrscr();
 char ch_x[255];
 scan_name(ch_x);
 printf("znachenie massiva %s\n",ch_x);
 return 0;
}
 
void scan_name(char ch_n[255])
{
 char tmp_n[2],c;
 for(;;)
  {
   c=getch();
   if(c==13)
    break;
   if(c<97||c>122)
    continue;
   if(c==8)
    {
     printf("\b \b");
     putch(c==32);
     printf("\b \b");
      for(int i=0;i<256;i++)
       ch_n[i]=0;
    }
    putch(c);
    tmp_n[0]=c;
    strcat(ch_n,tmp_n);
  };
}
В связи с этим у меня появляется мысль о том, что в корне делаю что-то не так.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2013, 16:20
Ответы с готовыми решениями:

Приложение имеющее функцию передачи данных геопозиции
Здравствуйте, подскажите, пожалуйста, где реализовать подобное, и с помощью чего, если есть...

передачи в вызываемую функцию ?
#include &lt;iostream.h&gt; void fun(int * = NULL, int = 0); void main() { int Arr =...

Способы передачи параметров в функцию
#include&lt;iostream&gt; using namespace std; void swap1(int x, int y) { int z; z=x; x=y; y=z;...

Ошибка передачи параметра в функцию
#include &quot;stdafx.h&quot; #include &quot;War.h&quot; int _tmain(int argc, _TCHAR* argv) { War...

2
213 / 202 / 85
Регистрация: 09.05.2012
Сообщений: 494
24.05.2013, 16:30 2
для того чтобы можно было выполнять манипуляции со стороками это должны быть не просто масивы символов, а масивы смиволов, последним символом в котором является '\0' - символ с кодом 0. 0 означает конец строки. по этому strcat(ch_n,tmp_n); копирует кроме ваших 2х байт все, что идет после, вплоть до первого встречного 0. от сюда и "крокозябры" - копирует черт знает что из памяти в вашу строку
1
0 / 0 / 0
Регистрация: 24.11.2012
Сообщений: 34
24.05.2013, 19:20  [ТС] 3
Цитата Сообщение от lowercase Посмотреть сообщение
для того чтобы можно было выполнять манипуляции со стороками это должны быть не просто масивы символов, а масивы смиволов, последним символом в котором является '\0' - символ с кодом 0. 0 означает конец строки. по этому strcat(ch_n,tmp_n); копирует кроме ваших 2х байт все, что идет после, вплоть до первого встречного 0. от сюда и "крокозябры" - копирует черт знает что из памяти в вашу строку
Инициализировал все массивы перед выполнением нулем. Все заработало. Спасибо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2013, 19:20

Ошибка передачи массива в функцию
Доброго времени суток. Есть массив и функция,в которой этот массив используется. В 14 строке...

Синтаксис передачи функции в функцию
Здравствуйте. Есть вот такой пример кода: #include &lt;iostream&gt; void Do( void(*WhatDo)() ) {...

Особенности передачи объекта в функцию
Вечер добрый, форум! Вопрос такой. Предположим есть класс class1, и есть class2, который...

Способ передачи параметров в функцию
Попалось мне на глаза утверждение, что первые Х параметров передаются через регистры, остальные на...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.