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

Помогите исправить ошибки - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.74
SAZl
 Аватар для SAZl
1 / 8 / 2
Регистрация: 12.10.2011
Сообщений: 173
15.10.2011, 11:23     Помогите исправить ошибки #1
Задание:
strncpy
char *strncpy1(char*dest,const char*s1,int maxlen);
Функция копирует kol=size_t maxlen символов строки src в строку dest.

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
#include "stdafx.h"
#include <string.h>
 
int main();
char *strncpy1(char*dest,const char*s1,int maxlen)
{
    
    for (int i=0;*(s1+i);i++)
        *(dest+i)=*(s1+i);
    *(dest+i)=0;
return dest;
}
int main()
  {char dest[50]; char s1[50]; int d;
  printf("Vvedite stroki: \n");
  gets(dest);
  gets(s1);
  scanf("%d",&d);
  {puts(strncpy1(dest,s1,d));
  puts(s1);
  puts(strncpy);
  getch( );
  return 0;
  }}
Ошибки:
Error 1 error C2065: 'i' : undeclared identifier d:\...\*.cpp 14
Error 2 error C2664: 'puts' : cannot convert parameter 1 from 'char *(__cdecl *)(char *,const char *,size_t)' to 'const char *' d:\...\*.cpp 26
Error 3 error C3861: 'getch': identifier not found d:\...\*.cpp 27
Error 4 fatal error C1903: unable to recover from previous error(s); stopping compilation d:\...\*.cpp 30
Error 5 fatal error C1063: INTERNAL COMPILER ERROR c1xx
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2011, 11:23     Помогите исправить ошибки
Посмотрите здесь:

помогите исправить ошибки C++
Помогите исправить ошибки C++
C++ помогите исправить ошибки
Помогите исправить ошибки в классе C++
Помогите исправить ошибки в классе C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
15.10.2011, 12:00     Помогите исправить ошибки #2
переменная i вне цикла не видна
подключи #include <cstdio>
SAZl
 Аватар для SAZl
1 / 8 / 2
Регистрация: 12.10.2011
Сообщений: 173
15.10.2011, 12:13  [ТС]     Помогите исправить ошибки #3
Цитата Сообщение от sandye51 Посмотреть сообщение
переменная i вне цикла не видна
подключи #include <cstdio>
Как ни странно но не помогло. Кстати после некоторых манипуляций осталось 3 ошибки:
Error 1 error C2065: 'i' : undeclared identifier d:\..\*.cpp 15
Error 2 error C2664: 'puts' : cannot convert parameter 1 from 'char *(__cdecl *)(char *,const char *,size_t)' to 'const char *' d:\...\*.cpp 27
Error 3 error C3861: 'getch': identifier not found d:\...\*.cpp 28
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
15.10.2011, 12:35     Помогите исправить ошибки #4
SAZl, я ж тебе русским языком написал что i - не видна вне цикла.
для getch() еще нужна #include <conio.h> походу

Цитата Сообщение от SAZl Посмотреть сообщение
puts(strncpy);
бред какой-то
SAZl
 Аватар для SAZl
1 / 8 / 2
Регистрация: 12.10.2011
Сообщений: 173
19.10.2011, 19:22  [ТС]     Помогите исправить ошибки #5
Оказалось программа по моей вине была с неправильным циклом.

Внезапно появилось в цикле FOR непонятное для меня действие. Дело происходит в том, что копирование символов, размера maxlen, в строку dest происходит до конца цикла, а именно до строки "*(dest+i)=0;".
Что нужно дописать, чтобы после выполнения цикла FOR выдавалась строка dest с скопированными символами из s1, количества maxlen.

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
#include "stdafx.h"
#include <cstdio>
#include <string.h>
#include <conio.h>
 
int main();
int i;
char *strncpy1(char*dest,const char*s1,int maxlen)
{
    for (int i=0; *(s1+i); i++)
    {
        if (i<maxlen)
        {
        }
        else
        break;
        *(dest+i)=*(s1+i);
        }
                  *(dest+i)=0;
    return dest;
}
int main()
{char dest[50]; char s1[50]; int d; 
  printf("Vvedite stroki: \n");
  gets(dest);
  gets(s1);
  scanf("%d",&d);
  puts(strncpy1(dest,s1,d));
  getch( );
}
Может кто поможет?
SAZl
 Аватар для SAZl
1 / 8 / 2
Регистрация: 12.10.2011
Сообщений: 173
27.10.2011, 18:23  [ТС]     Помогите исправить ошибки #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
32
33
#include "stdafx.h"
#include <cstdio>
#include <string.h>
#include <conio.h>
 
int main();
char *strncpy1(char*dest,const char*s1,size_t maxlen)
{
    int i;
    for (i=0; *(s1+i); i++)
    {
        if (i<maxlen)
        {
        }
        else
        break;
        *(dest+i)=*(s1+i);
        }
    *(dest+i)=0;     
    return dest;
}
int main()
{char dest[50]; char s1[50]; int d; 
  printf("Vvedite stroki: \n");
  gets(dest);
  gets(s1);
  scanf("%d",&d);
  puts(strncpy1(s1,dest,d));
  puts(strncpy(s1,dest,d));
  getch( );
  getchar();
  return 0;
}
Yandex
Объявления
27.10.2011, 18:23     Помогите исправить ошибки
Ответ Создать тему
Опции темы

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