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

указатели,символьные строки и функции - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Управление строками http://www.cyberforum.ru/cpp-beginners/thread421706.html
Есть ли функции в библиотеке Си (не Си++) позволяющие перезаписывать содержимое строк или менять положение индикатора позиции наподобии того как это можно делать с потоками? Пока кажеться, что в строки символы можно только добавлять...
C++ Функция fscanf Читаю из файла (в файле записаны пояснения к работе программы) код: #include <iostream> using namespace std; void fFunc(float a, float b, float c); void ffFunc(float a, float b, float c); http://www.cyberforum.ru/cpp-beginners/thread421692.html
C++ Как написать программу, которая
рисует прямоугольник символами, с задаными длиной и широтой. Например программа спрашивает ширину и длину (целые числа). Допустим это 3 и 5. Тогда программа нарисует звездочками прямоугольник 3 на 5. *** *** *** *** *** Как быть с числом строк - я знаю. А как сделать, чтобы в строке было нужное количество символов - не знаю
C++ FindFirstFile&&FindNextFile
Работаю в Visual Studio 2010. Есть такой код: void print_diffs() { WIN32_FIND_DATA fd; HANDLE Handle; Handle=FindFirstFile(LPCWSTR("C:\\"),&fd); while(FindNextFile(Handle,&fd)) { cout <<fd.cFileName<<endl;
C++ Нужен пример объявления структуры http://www.cyberforum.ru/cpp-beginners/thread421640.html
прошу помощи разобраться любая структура struct human { int age; int height; }; если я знаю какое именно количество будет людей, то проблем нету.. если не известное количество, и по ходу выполнению программы добавляются, проблема возникает
C++ Как научиться быстро решать задачи.Советы, литереатура? Совсем недавно начал изучать Си. Я очень люблю программировать на Си. Могу с утра до ночи это делать и сночи до утра.Но меня удручает огромное количество времени которое я трачу на решение одной задачи,тем более что я понимаю что задача очень проста.Кажется что вот вот уже нашел ключ к решению задачи. Ай нет и так могут пролететь сутки. А то и несоклько суток. В то время как мой друг подобную... подробнее

Показать сообщение отдельно
ProNoooob
71 / 71 / 6
Регистрация: 14.10.2009
Сообщений: 121
03.01.2012, 05:11     указатели,символьные строки и функции
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
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
 
 
char *MyOwnFunc(const char *string, int len)
{
    char *new_string;
    int k, i;
 
    if(!string) //проверка не подсунули ли нам нуль заместо строки.
        return 0;
    if(!len)    //проверка деления на нуль.
        return 0;
    //Выделяем память для новой строки. 
    //Размер = размер старой + место для символов переноса + место для нуля + погрешность округления.
    new_string = (char *)malloc(sizeof(string) + (sizeof(string)/len) + 1 + 1);
    if(!new_string) //проверка на корректно выделенную память
        return 0;
 
    for(k = 0, i = 0; *string; i++)
    {
        if(k == len)
        {
            new_string[i] = '\n';
            while(*string == ' ')
                string++;
            k = 0;
            continue;
        }
        new_string[i] = *string;
        string++;
        k++;
    }
 
    new_string[i] = '\0';
 
    return new_string;
}
 
int main()
{
    char buf[100];
    char *result;
 
    gets(buf);
    result = MyOwnFunc(buf, 7);
    if(!result)
        printf("Internal Error!");
    printf("\n%s\n", result);
 
    system("pause");                           //можно удалить
 
    return 0;
}
Вообще требования к заданию нужно излагать жоще.
Либо эта ваша функция безопасна на 100%. Либо она не использует стандартную библиотеку.
Вот пример выше. Мы же не имеем право изменять строку, которую нам дали в качестве аргумента.
Ни кто не знает сколько там свободной памяти, в которой можно копаться.
Поэтому мы создаем новую строку. Для этого используем malloc.
Естественно проверяем все на ошибки.
Но! Это не правильный вариант. (с точки зрения кодестайла).
Ни одна функция стандартной библиотеки так не работает.

В принципе знаки переноса строки можно было бы навставлять заместо пробелов. Но не всегда получиться выравнять строку там, где требует условие. Тут тоже непонятки. Четкое следование условию или нет?
(так например работает strtok)
 
Текущее время: 05:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru