Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
navychok
0 / 0 / 0
Регистрация: 29.01.2011
Сообщений: 13
1

Считать из документа имя, адрес, телефон и поместить в массив, и отсортировать по номерам

28.02.2012, 15:44. Просмотров 739. Ответов 6
Метки нет (Все метки)

День добрый!
Задача считывать из документа данные Имя, адрес, телефон поместить в массив, потом отсортировать по номерам. Я решил все поместить в массив char а потом скинуть номера отдельно и отсортировать. Но проблема в том что номера влезают только 5 значные а мне нужно ну 7 хотя бы.. я думал что просто long использовать можно а оно не пашет .. в чем косяк? И как можно исправить ниже код..
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
 
int main()
{
clrscr();
  long A[20], Z;
  int i=0;
  int a,  m, n, x, y;
 
  char c[20][3][20]; //массив человеков
 
  FILE *Ptr;
 
  Ptr=fopen("mass.txt","r");
   while  (!feof(Ptr)) {
 
fgets(c[i][0], 30, Ptr); //это имя
    fgets(c[i][1], 30, Ptr); // адрес
    fgets(c[i][2], 10, Ptr); // телефон
    i++;
}
  fclose(Ptr);
  printf("%s ", c[0][2]); //смотрю что в массиве
   A[0]=atol(c[0][2]); // преобразую в лонг
           printf("--A long- %d \n", A[0]); // смотрю что получилось..
getch();
}
Заранее спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2012, 15:44
Ответы с готовыми решениями:

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

Создать класс Человек, имеющий имя, адрес, телефон
#include &quot;mainwindow.h&quot; #include &quot;ui_mainwindow.h&quot; MainWindow::MainWindow(QWidget *parent) : ...

Структуры.Фамилия, Имя, Отчество Группа Домашний адрес, Телефон Электронная пошта
Структуры. Notebook:Фамилия, Имя, Отчество, Домашний адрес, Телефон Электронная пошта.

Класс студент с полями: год рождения, имя, фамилия, отчество, адрес и телефон.
Написать класс студент с полями: год рождения, имя, фамилия, отчество, адрес и телефон.

Нужно создать структуру типа: СТУДЕНТ: Фамилия, Имя, Отчество, Домашний адрес, телефон, Баллы
СТУДЕНТ: Фамилия, Имя, Отчество, Домашний адрес, телефон, Баллы. А потом Определить данные о...

6
Roof
154 / 154 / 44
Регистрация: 03.11.2010
Сообщений: 393
28.02.2012, 15:49 2
Нужно создать структуру с соответствующими полями ( Имя, адрес, телефон ) и создавать массив структур.
Цитата Сообщение от navychok Посмотреть сообщение
char c[20][3][20];
- а это, я уверен, совсем неверный подход.
0
navychok
0 / 0 / 0
Регистрация: 29.01.2011
Сообщений: 13
28.02.2012, 15:58  [ТС] 3
Понял, попробую, напишу что получилось..
0
darkknight2008
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
28.02.2012, 16:05 4
Да и не обязательно рпеобразовывать номер телефона в число. Есть функция strcmp вроде, она производит сравнение строк. Но если совсем неимется, то можно использовать и приведение к числу. В тип long должно влезать по крайней мере 9 цифр.
0
navychok
0 / 0 / 0
Регистрация: 29.01.2011
Сообщений: 13
28.02.2012, 16:22  [ТС] 5
Выдает фигню -26574 какую то =(
Atol не работает я её не правильно юзаю?
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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
 
int main()
{
clrscr();
  long  Z;
  int i=0;
  char *A;
  int a,  m, n, x, y;
  struct Spic {
  char name[20];
  char adress[20];
  char phone[15];
  } *c[10];
 
  
  FILE *Ptr;
 Ptr=fopen("mass.txt","r");
   while  (!feof(Ptr)) {
    fgets(c[i]->name, 19, Ptr);
    fgets(c[i]->adress, 19, Ptr);
    fgets(c[i]->phone, 10, Ptr);
    i++;
}
  fclose(Ptr);
  puts(c[0]->phone);
   A=c[0]->phone;
   Z=atol(A);
           printf("--A long- %d \n", Z);
getch();
}
0
darkknight2008
62 / 62 / 11
Регистрация: 16.10.2011
Сообщений: 200
28.02.2012, 18:26 6
Ты немного бреда написал. *c[10] - это 10 указатель на структуру. А тебе нужно просто 10 элементов. Так что должно быть просто с[10]
0
navychok
0 / 0 / 0
Регистрация: 29.01.2011
Сообщений: 13
28.02.2012, 21:24  [ТС] 7
Не, если убрать ошибку выдаст) Я понял в чем ошибся
C
1
 printf("--A long- %ld \n", Z);
Вот так все работает. Хотя может ты и прав.
0
28.02.2012, 21:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2012, 21:24

Создать упорядоченный список с информацией о пяти студентах: имя, фамилия, ВУЗ, факультет, домашний адрес, телефон.
ААА... Ребята, прошу о помощи=) Delphi не поддается=( Сессия на носу, решить задачу не могу=(......

Организовать файл записей и поместить в него сведения о нескольких студентах (Фамилия, имя, отчество, дата рождения, домашний адрес).
Организовать файл записей и поместить в него сведения о нескольких студентах (Фамилия, имя,...

Известна информация о 30 клиентах пункта проката:имя,отчество,адрес и домашний телефон. Известно также название предмета,взятого каждым из напрокат (
Известна информация о 30 клиентах пункта проката:имя,отчество,адрес и домашний телефон. Известно...


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

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

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