Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Мега Ксю
3 / 3 / 0
Регистрация: 02.03.2013
Сообщений: 56
1

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

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

Привет всем!
Есть текстовый файл, в котором строчки такого вот формата
Код
***
{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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2015, 11:39
Ответы с готовыми решениями:

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

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

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

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

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

3
HighPredator
5692 / 2011 / 723
Регистрация: 10.12.2010
Сообщений: 5,778
Записей в блоге: 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
HighPredator
5692 / 2011 / 723
Регистрация: 10.12.2010
Сообщений: 5,778
Записей в блоге: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2015, 14:03

Записать все числа из файла после знака "=" и "," в переменные или одномерный массив
Есть входной файл input.txt вида: TRIANGLE: P1=100,100; P2=200,200; P3=150,...

Из массива X(N) все простые числа записать в массив Y(k), а остальные - в массив Z(m)
помогите пожалуйста решить задачу на языке си: Из целочисленного массива Х(N)...

Считать 3 числа из файла, и записать в результирующий
Имеются некоторые проблемы с чтением с/записью в файл. Допустим, есть...


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

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

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