Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
24 / 21 / 3
Регистрация: 04.11.2014
Сообщений: 283
1

Функция динамической строки

21.10.2017, 22:40. Показов 509. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, написал небольшой код для записи строки неизвестной длины в файл, но возникла проблема: записывается только первый символ. Я понимаю, что buffer - это указатель на начало выделенной памяти, поэтому и записывается только первый символ, но думаю, что это обойти можно, что бы через указатель записать всю строку, но как не могу придумать.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
char* str()
{
    unsigned int i = 0;
    char ch, * buffer = (char*)malloc(sizeof(char));
    while ((ch = getchar()) != '\n') {
        buffer[i] = ch;
        buffer = (char*)realloc(buffer, (1 + (i++)) * sizeof(char));
    }
    return *buffer;
 
    FILE* f;
    f = fopen(path_file, "r+");
    fseek(f, 0, SEEK_END);
    printf("Enter new word (lenght < 128):\n");
    char *temp = str();
    fputs(&temp, f);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2017, 22:40
Ответы с готовыми решениями:

Функция получает массив указателей на строки и возвращает строку в динамической памяти
Функция получает массив указателей на строки и возвращает строку в динамической памяти, содержащую...

Функция получает массив указателей на строки и возвращает строку в динамической памяти, содержащую объединенный текст из входных строк
Функция получает массив указателей на строки и возвращает строку в динамической памяти, содержащую...

Удалить строки динамической матрицы, начиная со строки К1 и до строки К2
Сформировать динамический двумерный массив, заполнить его случайными числами и удалить строки,...

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

3
30 / 36 / 9
Регистрация: 16.10.2017
Сообщений: 137
21.10.2017, 22:52 2
Как-то все очень замудрил.
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <string.h>
 
int main()
{
    char buffer[8] = {0};
    FILE* f = fopen("file.txt", "w");
    while(strlen(fgets(buffer, 8, stdin)) == 7)
        fprintf(f, "%s", buffer);
    fputs(buffer, f);
    fclose(f);
}
Буфер специально выбрал маленького размера, чтобы в него даже мелкая строка не влеазал полностью.
Пример работы:
Код
$ ./a.out 
this is a test string
$ cat file.txt 
this is a test string
0
24 / 21 / 3
Регистрация: 04.11.2014
Сообщений: 283
21.10.2017, 23:15  [ТС] 3
Братец Кролик, так необходимо, потому что я не имею возможности сразу открыть и записать, мне необходимо сформировать строку разного размера неизвестного размера, вернуть из функции её, а потом уже в другой функции записать их в файл. Поэтому такое решение увы не подходит.
0
30 / 36 / 9
Регистрация: 16.10.2017
Сообщений: 137
22.10.2017, 00:04 4
Ясно.
Цитата Сообщение от ЗеХель Посмотреть сообщение
fputs(&temp, f);
Зачем ты берешь адрес у указателя? Вместо файла выведи строку на экран и проверь, что она верная
0
22.10.2017, 00:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2017, 00:04
Помогаю со студенческими работами здесь

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

Рассортировать строки динамической матрицы по наибольшему элементу строки.
Рассортировать строки динамической матрицы по наибольшему элементу строки. Как это?я не понимаю...

Функция транспонирования динамической матрицы N*M
Собственно сабж. Если точнее, проблема возникла с не самим алгоритмом транспонирования, а с выводом...

Не работает функция BlocksIt в динамической сетке
Добрый день! Осваиваю скрипт динамической сетки...

Шаблонная функция определения динамической матрицы
Добрый день/вечер господа программисты. Есть задача: в отдельном файле .cpp создать шаблонную...

Функция размещения переменных в динамической памяти!
Подскажите ошибку! вроде все сделал по методе, а не работает! проблема с переменными iP1, iP2, iP3...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru