Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
max_sk
84 / 11 / 2
Регистрация: 11.04.2015
Сообщений: 583
1

Как выдать ошибку, что недостаточно места в массиве?

13.04.2015, 08:09. Просмотров 353. Ответов 8
Метки нет (Все метки)

Простенькое упражнение - написать собственную функцию strcat(char dest[],char src[]). Уже сделал, за исключением двух нюансов:

- Если я работаю с неизвестным размером массива для dest и src, то как проверить, и соответственно выдать ошибку, о нехватке места в dest?
- Функция должна называться strcat(), а мой Eclipse категорически отказывается принимать это название. Наверное из-за того, что такая библиотечная функция уже существует. Как это обойти?

Заранее благодарен,
Максим
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2015, 08:09
Ответы с готовыми решениями:

Что написать вместо знаков ? Если пользователь введёт на цифру а другой символ. как выдать на экран Ошибку ?
cout << "Введите действительную часть комплексного числа" << endl; cin >> a; if ( ??? ) ...

Выдает ошибку недостаточно прав для чтения. Что сделать чтобы работало?
И объясните пожалуйста, все ли правильно и нужно ли эти файлы самому создавать, если да то где. ...

Недостаточно места
Переустановил Windows 7. Теперь периодически появляется сообщение, что недостаточно места на диске....

Недостаточно места на диске
Здрям! При попытке скачать обновления для VMWare player выдает ошибку "Your harddrive is full. Free...

Недостаточно места в byte
Записываю аудио в коллекцию массива "audio_bytes", все хорошо, но минут через 20 записи выкидывает...

8
MansMI
1457 / 1165 / 551
Регистрация: 08.01.2012
Сообщений: 4,509
13.04.2015, 08:24 2
там первые бувы str от слова string видимо, а она нулем заканчивается, StrCat назвать
0
max_sk
84 / 11 / 2
Регистрация: 11.04.2015
Сообщений: 583
13.04.2015, 08:44  [ТС] 3
Не совсем понял ваш ответ... У меня в main() задано:

C
1
2
str1[30]="I'm good programmer!";
str2[50]="O'k";
Переписываю str1 в str2. Теперь, если я определяю длину массива через if(strlen(str2)<strlen(str1)) printf("Oshibka razmera"); то это неверно, т.к в str2 может влезть и первая строка, там задано 50 элементов. Если я пишу if(sizeof(str2)<sizeof(str1)) printf("Oshibka razmera"); то тоже неверно, т.к. sizeof(str2) равен 8 почему то и соответственно str1 тоже больше... А мне нужно чтобы определяло str2>str1 так как в str2 задано 50 элементов массива, а в str1 всего 30...
0
MansMI
1457 / 1165 / 551
Регистрация: 08.01.2012
Сообщений: 4,509
13.04.2015, 09:04 4
это же легко проверить как ведет себя библиотечная
0
13.04.2015, 09:04
max_sk
84 / 11 / 2
Регистрация: 11.04.2015
Сообщений: 583
13.04.2015, 09:10  [ТС] 5
Так в том то и дело, что она ведет себя как я написал. Эклипс отказывается принимать это название. Разве что в gedit попробовать запустить... Или вы о строках?
0
MansMI
1457 / 1165 / 551
Регистрация: 08.01.2012
Сообщений: 4,509
13.04.2015, 09:20 6
C
1
2
3
4
    char str1[30]="I'm good programmer!";
    char str2[5]="O'k";
    strcat(str2,str1);
    printf("%s",str2);
вот так выдает ошибку, но при исполнении а не при компиляции, ее дело присобачить, а о размерах пусть кодер думает, а в именах у меня StrCat прекрасно работает, С разборчив к регистрам букв
0
max_sk
84 / 11 / 2
Регистрация: 11.04.2015
Сообщений: 583
13.04.2015, 09:31  [ТС] 7
Так дело в том, что мне собственный strcat () написать нужно, а не пользоваться библиотечным. Разумеется, что библиотечный работает отлично! В задании сказано - "Допустим, в библиотеке string.h не хватает функций strcat (), strcpy () и strncpy (). Реализуйте их."

Доберусь до компа, скину точный перевод и свой код... :-)
0
MansMI
1457 / 1165 / 551
Регистрация: 08.01.2012
Сообщений: 4,509
13.04.2015, 09:38 8
идеология языка С - я сделаю все, что не протеворечит грамматике, а о результатах пусть писатель думает, у меня есть два указателя и где то в конце у них ноль, так я и сложу две строки
0
max_sk
84 / 11 / 2
Регистрация: 11.04.2015
Сообщений: 583
13.04.2015, 10:25  [ТС] 9
Не знаю... Пока выкладываю задание и код...

Добавлено через 6 минут
Задание:

Допустим, в библиотеке string.h отсутствует функция:
a) strcat([],[]), которая присоединяет вторую строку в конец первой
b) strcpy([],[]), которая переписывает вторую строку вместо первой
c) strncpy([],[],n), которая переписывает n символов из начала первой строки во вторую строку.

Реализуйте их, не забыв добавить проверки соответствия условиям, там где надо.

Добавлено через 19 секунд
Код:

Добавлено через 1 минуту
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
void my_strcat(char str2[],char str1[]);
void my_strcpy(char dest[],char src[]);
void my_strncpy(char dest[],char src[],int n);
 
int main(void)
{
    char str1[30]="I'm very good programmer!";
    char str2[50]="OK,";
    char str3[10]="Maksim";
    int stam;
 
    my_strcat(str2,str1);
 
    printf("%s\n",str2);
 
    my_strcpy(str1,str3);
 
    printf("%s\n",str1);
 
    my_strncpy(str3,str1,4);
 
    printf("%s\n",str3);
    scanf("%d",&stam);
 
    return 0;
}
 
void my_strcat(char str2[],char str1[])
{
    int count1=0,count2=0;
 
    while(str1[count1]!='\0'){
        while(str2[count2]!='\0') count2++;
        str2[count2++]=str1[count1++];
    }
}
 
void my_strcpy(char dest[],char src[])
{
    int count1;
 
    for(count1=0; src[count1]!='\0'; count1++) dest[count1]=src[count1];
    dest[count1]='\0';
}
 
void my_strncpy(char dest[],char src[],int n)
{
    int count1;
 
    for(count1=0; count1<n; count1++) dest[count1]=src[count1];
    dest[count1]='\0';
}
0
13.04.2015, 10:25
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2015, 10:25

Недостаточно места на устройстве
Не подскажете почему после того как плей маркет автоматически обновляется и я пытаюсь через него...

Выдать ошибку, что поле не заполнено
есть 2 поля логин и пароль. выдать ошибку если какое нибудь поле не заполненно или если оба....

Недостаточно свободного места в /home
Всем привет. Понадобилось создать каталог в /home, а mkdir говорит мне, что недостаточно места....


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

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

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