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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.61
Rom@shka
0 / 0 / 0
Регистрация: 12.12.2008
Сообщений: 8
#1

Строки и файлы - C++

12.12.2008, 19:55. Просмотров 3419. Ответов 5
Метки нет (Все метки)

задача:прочитать из файла имя, фамилию разделенные пробелами, а затем записать их в масссив парами, указать размер и вывести на экран...помогите,плиииз!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2008, 19:55     Строки и файлы
Посмотрите здесь:

Строки и файлы C++
Строки и файлы C++
строки и файлы C++
строки и файлы C++
Строки и файлы C++
Файлы и строки C++
C++ Строки И Файлы
Строки и файлы C++
Строки и файлы C++
C++ Строки и файлы
Строки и файлы C++
Строки и файлы C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
13.12.2008, 00:37     Строки и файлы #2
Код
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXLINE   1000    /* максимальная длина строки */
#define MAXWORD   100     /* максимальная длина слова */
#define MAXNAMES  5000    /* максимальное количество имён (+фамилий) */

typedef struct {
    char fstname[MAXWORD];
    char lstname[MAXWORD];
    unsigned fstsize;
    unsigned lstsize;
} FIO;
    
/* читает из файла имя, фамилию разделенные пробелами,
   пишет их в масссив парами, указывает размер и выводит на экран;
   с применением структуры */    
main()
{
    FILE *fp;
    FIO *names[MAXNAMES], *namep, *makename();
    char line[MAXLINE], *p;
    long i, nlines;
    const char *fname = "file.txt";    
        
    if ((fp = fopen(fname, "rb")) == NULL)
        return 1;
    for (nlines = 0; (p = fgets(line, MAXLINE, fp)) != NULL && nlines < MAXNAMES; nlines++) {
        if ((namep = names[nlines] = makename()) == NULL)
            break;
        if (sscanf(line, "%s%s", &namep->fstname, &namep->lstname) != 2) {
            free((void *) namep);
            break;
        }
        namep->fstsize = strlen(namep->fstname);
        namep->lstsize = strlen(namep->lstname);
    }
    fclose(fp);
    for (i = 0; i < nlines; i++) {
        printf("%15s %15s : %d %d\n",
            names[i]->fstname, names[i]->lstname, names[i]->fstsize, names[i]->lstsize);
        free(names[i]);
    }
    return 0;
}

/* makename:  создание записи имя+фамилия (с размерами) */
FIO *makename()
{
    return (FIO *) malloc(sizeof(FIO));
}
Rom@shka
0 / 0 / 0
Регистрация: 12.12.2008
Сообщений: 8
14.12.2008, 12:09  [ТС]     Строки и файлы #3
Спасибо большое,только мне нужно было на с++,и можно попроще,все таки первый курс
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
14.12.2008, 17:20     Строки и файлы #4
без памяти и структур?
смысл в том чтобы записать одну строку массива строк типа
"имя фамилия" а вывести длину этой строки ?
Rom@shka
0 / 0 / 0
Регистрация: 12.12.2008
Сообщений: 8
14.12.2008, 18:58  [ТС]     Строки и файлы #5
с памятью и со структурами, но на с++

Добавлено через 42 минуты 53 секунды
с памятью, но желательно без структур, на с++

Добавлено через 2 минуты 47 секунд
в файле нужно написать n имен и фамилий, да в одну строчку, а выводить нужно уже парами, n строчек
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
15.12.2008, 06:02     Строки и файлы #6
без памяти и структур на C
Код
 
#include <stdio.h>
#include <string.h>

#define MAXWORD  100    /* максимальная длина слова */

/* читает из файла имя, фамилию разделенные пробелами,
   пишет их в масссив парами, указывает размер и выводит на экран */
main()
{
    FILE *fp;
    char fstname[MAXWORD], lstname[MAXWORD];
    char *fname = "file.txt";
    unsigned nlines;
    
    if ((fp = fopen(fname, "rb")) == NULL)
        return 1;
    for (nlines = 0; fscanf(fp, "%s%s", fstname, lstname) == 2; ) {
        nlines++;
        printf("%ld:%10s %-10s%3d\n",
            nlines, fstname, lstname, strlen(fstname)+strlen(lstname));
    }
    fclose(fp);
    return 0;
}
вывод

file.txt
Код
one two
three four
five six seven
eight
Код
[guest@localhost tmp]$ ./test
1:       one two         6
2:     three four        9
3:      five six         7
4:     seven eight      10
[guest@localhost tmp]$
Yandex
Объявления
15.12.2008, 06:02     Строки и файлы
Ответ Создать тему
Опции темы

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