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

Чтение из файла в массив char - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 102, средняя оценка - 4.80
Костяныч
15 / 15 / 0
Регистрация: 31.10.2010
Сообщений: 1,225
Записей в блоге: 2
07.01.2011, 10:09     Чтение из файла в массив char #1
Доброе время суток господа. У меня есть массив char a[ ]="I am text" кпримеру, сама программа для работы с массивом написана. Но мне надо данные из файла брать т.е. у меня есть пустой массив и файл с текстом, надо текст присвоить массиву...я делал следующее:
C++
1
2
3
4
char a[99];
FILE *f;
f=fopen("text.txt","r");
fscanf(f,"%[^/n]s",&a);
укажите на ошибку или предложите свой вариант.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
07.01.2011, 10:20     Чтение из файла в массив char #2
Наверное, ты подразумевал вот это:
C
1
fscanf(f,"%[^\n]s",&a);
Можно также использовать fgets - читает строку из файла
Костяныч
15 / 15 / 0
Регистрация: 31.10.2010
Сообщений: 1,225
Записей в блоге: 2
07.01.2011, 10:54  [ТС]     Чтение из файла в массив char #3
Да, я именно это имел ввиду. Значит я правильно написал? Понимаете в чем дело, я написал программу для работы с массивом, если я fgetc использую, то придется работать с файлом?
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
07.01.2011, 11:00     Чтение из файла в массив char #4
С помощью fgets считываешь строку из файла в массив и дальше работаешь с массивом
Костяныч
15 / 15 / 0
Регистрация: 31.10.2010
Сообщений: 1,225
Записей в блоге: 2
07.01.2011, 11:12  [ТС]     Чтение из файла в массив char #5
Напишите пожалуйста, как мне присвоить строку из файла f массиву a[100] при помощи fgets (я не понимаю как с ней работать), чтобы можно было работать непосредственно в самим массивом.
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
07.01.2011, 11:23     Чтение из файла в массив char #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
#include <stdio.h>
#include <stdlib.h>
 
#define SIZE 100
#define IFILE "input.txt"
 
int main()
{
    char buf[SIZE];
    FILE* f;
    if((f = fopen(IFILE, "r")) == NULL)
    {
        perror("fopen");
        exit(1);
    }
    
    if((fgets(buf, SIZE, f) == NULL) && ferror(f))
    {
        fprintf(stderr, "Error reading from stream\n");
        exit(2);
    }
    
    fputs(buf, stdout);
    exit(0);
}
Костяныч
15 / 15 / 0
Регистрация: 31.10.2010
Сообщений: 1,225
Записей в блоге: 2
07.01.2011, 11:28  [ТС]     Чтение из файла в массив char #7
Работает спасибо! А можно эту функцию использовать для записи в файл?
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
07.01.2011, 11:29     Чтение из файла в массив char #8
Вот:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
#define SIZE_STR 100 // размер строки
 
int main(int argc, char *argv[])
{
    char text[SIZE_STR];
    FILE *my_file=fopen("file.txt","r"); // открытие файла
    fgets(text,SIZE_STR,my_file); //считываем строку разимером максимум
        // 100 символов из файла
    puts(text); // вывод (необязательно)
        fclose(my_file); // закрытие забыл
    return 0;
}
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
07.01.2011, 11:30     Чтение из файла в массив char #9
Для записи используется fputs. Посмотри, у меня в примере оно есть
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
07.01.2011, 11:32     Чтение из файла в массив char #10
для записи fprintf, fputs, fputchar. Везде первым аргументом указываем переменную типа FILE*.
Костяныч
15 / 15 / 0
Регистрация: 31.10.2010
Сообщений: 1,225
Записей в блоге: 2
07.01.2011, 11:33  [ТС]     Чтение из файла в массив char #11
Ага спасибо
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
07.01.2011, 11:33     Чтение из файла в массив char #12
Цитата Сообщение от МаксимМВ Посмотреть сообщение
Везде первым аргументом указываем переменную типа FILE*.
Не везде
Костяныч
15 / 15 / 0
Регистрация: 31.10.2010
Сообщений: 1,225
Записей в блоге: 2
07.01.2011, 11:43  [ТС]     Чтение из файла в массив char #13
Как с помощью fprintf записать массив c в файл z,причем из массива надо взять всего int k=15 (т.е. 15 знаков)?
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
07.01.2011, 11:45     Чтение из файла в массив char #14
Костяныч, записать массив какого типа?
Вообще, напиши подробней, что за задание
Костяныч
15 / 15 / 0
Регистрация: 31.10.2010
Сообщений: 1,225
Записей в блоге: 2
07.01.2011, 13:32  [ТС]     Чтение из файла в массив char #15
тип char

Добавлено через 12 минут
Да я уже все сделал. Задание:Даны текстовые файлы F и G.Переписать в файл Q слова из файлов F и G поочередно, одно слово из F, другое из G. После окончания слов в одном из входных файлов, запись прекращается.
У меня этот самый G на 100 ячеек, в файл он записывает то что надо+ на оставшееся место хлам. Вот мне и нужно в файл записать этот G нужного мне текста.
Не G а Q, я перепутал!!!

Добавлено через 1 час 32 минуты
Как из массива char a[100] переписать в файл z лишь 10 знаков (int k=10)? с помощью fprintf
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
07.01.2011, 16:04     Чтение из файла в массив char #16
Цитата Сообщение от Костяныч Посмотреть сообщение
Как из массива char a[100] переписать в файл z лишь 10 знаков (int k=10)? с помощью fprintf
Я бы делал через fwrite:
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
#include <stdio.h>
#include <stdlib.h>
 
#define SIZE 100
#define IFILE "input.txt"
#define OFILE "output.txt"
 
int main()
{
    char buf[SIZE];
    FILE* f;
    FILE* o;
    if((f = fopen(IFILE, "r")) == NULL)
    {
        perror("fopen");
        exit(1);
    }
    
    if((o = fopen(OFILE, "wb")) == NULL)
    {
        perror("fopen");
        exit(2);
    }
    
    if((fgets(buf, SIZE, f) == NULL) && ferror(f))
    {
        fprintf(stderr, "Error reading from stream\n");
        exit(3);
    }
    
    if((fwrite(buf, sizeof(char), 10, o) != 10) && ferror(o))
    {
        fprintf(stderr, "Error writing to stream\n");
        exit(4);
    }
    
    exit(0);
}
Костяныч
15 / 15 / 0
Регистрация: 31.10.2010
Сообщений: 1,225
Записей в блоге: 2
09.01.2011, 18:11  [ТС]     Чтение из файла в массив char #17
Расскажите, что содержится в fwrite. fwrite(имя файла,.......) а дальше не знаю(((
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2011, 18:31     Чтение из файла в массив char
Еще ссылки по теме:

Переписать массив строк из файла в двумерный массив типа CHAR C++! C++
Чтение из файла в массив C++
Чтение из файла и запись в массив char C++

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
09.01.2011, 18:31     Чтение из файла в массив char #18
C
1
2
size_t fwrite(const void *ptr, size_t size, size_t nmemb,
                     FILE *stream);
fwrite записывает nmemb элементов данных из указателя ptr, каждый из элементов длиной size байт, в указатель потока stream

Подробнее
Код
NAME
       fread, fwrite - binary stream input/output

SYNOPSIS
       #include <stdio.h>

       size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

       size_t fwrite(const void *ptr, size_t size, size_t nmemb,
                     FILE *stream);

DESCRIPTION
       The  function  fread()  reads  nmemb  elements of data, each size bytes
       long, from the stream pointed to by stream, storing them at  the  loca‐
       tion given by ptr.

       The  function  fwrite()  writes nmemb elements of data, each size bytes
       long, to the stream pointed to by stream, obtaining them from the loca‐
       tion given by ptr.

       For nonlocking counterparts, see unlocked_stdio(3).

RETURN VALUE
       fread()  and  fwrite()  return the number of items successfully read or
       written (i.e., not the number of characters).  If an error  occurs,  or
       the  end-of-file is reached, the return value is a short item count (or
       zero).

       fread() does not distinguish between end-of-file and error, and callers
       must use feof(3) and ferror(3) to determine which occurred.
Yandex
Объявления
09.01.2011, 18:31     Чтение из файла в массив char
Ответ Создать тему
Опции темы

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