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

Записать числа файла в массив

02.04.2015, 11:39. Показов 1373. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем!
Есть текстовый файл, в котором строчки такого вот формата
Код
***
{49,183,46,189,165,27,27,96,130}
***
как разобрать его таким образом, чтобы в 9 переменных записались последовательно числа?
т.е. есть
C
1
int a1, a2, a3, a4, a5, a6, a7, a8, a9
и в них должны быть цифры строки из файла (если исходить из приведённой выше строки, то a1 = 49, a2 = 183, a3 = 46 и т.д.
общий алгоритм такой

Код
открываю файл

цикл (пока не закончится файл)
читаю строчку
выписываю из неё зачения для a1-a9
что-то делаю с этими значениями
конец цикла
P.S. Чисел в каждой строчке всегда 9

как это сделать?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2015, 11:39
Ответы с готовыми решениями:

Записать в массив из файла только числа
Есть текстовый файл. В нем содержится инф-я вот в таком виде: ugol: 12 123 32 32 44 12.2

Записать числа из файла в динамически созданный массив
Итак есть у меня файл heap.txt в котором 11 чисел: 23 6 11 12 17 8 7 11

Как записать вещественные числа из файла в массив?
Подскажите, пожалуйста, как записать вещественные числа из файла в массив. Пример строки из файла...

Нужно записать числа из файла в двумерный массив
Всем привет. Задание: Дан текстовый файл, содержащий числа типа int, разделенные запятой в виде...

3
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
02.04.2015, 11:42 2
Цитата Сообщение от Мега Ксю Посмотреть сообщение
выписываю из неё зачения для a1-a9
Вам помогут strtok + sscanf. Почитайте про них.
1
3 / 3 / 0
Регистрация: 02.03.2013
Сообщений: 56
02.04.2015, 12:11  [ТС] 3
Цитата Сообщение от HighPredator Посмотреть сообщение
Вам помогут strtok + sscanf. Почитайте про них.
действительно помогли
код работает, только очень уж он ужасный..
Как его сделать более читаемым?
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main(void)
{
  char str[] = "{49,148,123,197,181,27,27,96,130},", * p;
  int i, k;
    
  printf("String: %s\n", str);
  
  for (i = 0; str[i] != '\0'; i++)
    if (str[i] == '}' || str[i] == '{')
    {
      for (k = i; str[k] != '\0'; k++)
        str[k] = str[k+1]; i--;
    }
    
  int a1, a2, a3, a4, a5, a6, a7, a8, a9;
  
  int buff[8];
    
  printf("Number only:\n");
  i = 0;
  for (p = strtok(str, ","); p; p = strtok(NULL, ","))
  {
    printf("num%d:%s\n", i + 1, p);
    buff[i] = atoi(p);
    i++;
  }
 
  a1 = buff[0];
  a2 = buff[1];
  a3 = buff[2];
  a4 = buff[3];
  a5 = buff[4];
  a6 = buff[5];
  a7 = buff[6];
  a8 = buff[7];
  a9 = buff[8];
  
  printf("A1 = %d\nA2 = %d\nA3 = %d\nA4 = %d\nA5 = %d\nA6 = %d\nA7 = %d\nA8 = %d\nA9 = %d\n",
          a1, a2, a3, a4, a5, a6, a7, a8, a9);
 
  printf("\n");
 
  return 0;
}
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
02.04.2015, 14:03 4
Лучший ответ Сообщение было отмечено Мега Ксю как решение

Решение

Цитата Сообщение от Мега Ксю Посмотреть сообщение
Как его сделать более читаемым?
В контексте того, что надо таскать аж 9 переменных вместо массива, тут не особенно можно что-то улучшить с точки зрения читабельности. Могу от себя лично порекомендовать инициализировать все переменные вообще.

В качестве же конкретного улучшизма могу посоветовать добавить фигурные скобки в списки разделителей. Тогда вам первый цикл (стр 12-17) не понадобится вообще. Хорошо, что вы разобрались как это готовить.
Вот альт решение на sscanf:
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
#include <stdio.h>
 
int main(void)
{
  char str[] = "{49,148,123,197,181,27,27,96,130},";
 
  int a1 = 0;
  int a2 = 0;
  int a3 = 0;
  int a4 = 0;
  int a5 = 0;
  int a6 = 0;
  int a7 = 0;
  int a8 = 0;
  int a9 = 0;
 
  printf("String: %s\n", str);
 
  sscanf(str, "%*c%d %*c%d %*c%d %*c%d %*c%d %*c%d %*c%d %*c%d %*c%d",
      &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, &a9);
 
  printf("%d %d %d %d %d %d %d %d %d\n",
      a1, a2, a3, a4, a5, a6, a7, a8, a9);
 
  return 0;
}
1
02.04.2015, 14:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2015, 14:03
Помогаю со студенческими работами здесь

По заданному X нужно в массив записать следующие числа записанные в массив раздельно по каждой цифре числа
Помогите сделать следующее или посоветуйте как сделать это иначе. Пример: Пусть X=3. Мне по...

Записать в массив числа из файла
например дан файл с числами с таким вот содержанием: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

Числа из файла записать в массив
Всем привет ! Есть файл, в файле 4 числа(неизвестно количество цифр) , разделённые пробелами, как...

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

Считать числа из файла и записать их в массив
Проблема следущая: нужна программа которая считывает числа типа double из файла (в моем случае это...

Считать числа с файла и записать их в массив
Вот мой код : FileInputStream fin; String arr = new String; try...


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

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