Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Неправильно считывает строку 
:(
    Опции темы
xamelon
Дата 27.2.2012, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 5.3.2011

Репутация: нет
Всего: нет



В общем, есть код: 
Код

#include <cstdio>
#include <iostream>
#include <string>
using namespace std;

int nakaz(int spd)
{
    int sum_n;
    if(spd <= 70 && spd >= 0)
    {
        sum_n = 0;    
    }
    else if(spd >= 71 && spd <= 80)
    {
        sum_n = 100;
    }
    else if(spd >= 81 && spd <= 100)
    {
        sum_n = 300;
    }
    else if(spd >= 101 && spd <= 120)
    {
        sum_n = 1000;
    }
    else if(spd >= 121)
    {
        sum_n = 3000;
    }
    return sum_n;
}

int main()
{
    int n; //÷èñëî ñòðîê    
    FILE *fin, *fout;
    fin = fopen("in.txt", "r");
    fout = fopen("out.txt", "w");
    fscanf(fin, "%d", &n);
    char str[n][8];
    int g[n];
    int sum_n[n];
    
    for(int i = 0; i<n; ++i)
    {

    fscanf(fin, "%s", &str[i]);
    fscanf(fin, "%d", &g[i]);    
    sum_n[i] = nakaz(g[i]);
    std::cout<<sum_n[i]<<std::endl;
    std::cout<<"str["<<i<<"] = "<<str[i]<<std::endl;
    }

for(int i =0; i<n; ++i)
{
std::cout<<""<<std::endl;
std::cout<<"str["<<i<<"] = "<<str[i]<<std::endl;    
}

return 0;
}



Который считывает данные из этого файла:
Код

5
a111aa78 150
o000oo00 70
a234bv56 65
a111aa78 110
o000oo00 83


В первый элемент массива str он считывает каждую строку, то есть дополняет её, во второй все, кроме одной и только в последний элемент он считывает правильно. То есть вот содержимое первого элемента: 
1)a111aa78o000oo00a234bv56a111aa78o000oo00
2)o000oo00a234bv56a111aa78o000oo00
и так далее... в чём проблема?

PM MAIL   Вверх
feodorv
Дата 27.2.2012, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(xamelon @  27.2.2012,  20:16 Найти цитируемый пост)
в чём проблема?

В том, что нужно оставить место для символа "конец строки" ('\0'):

Цитата(xamelon @  27.2.2012,  20:16 Найти цитируемый пост)
    char str[n][8];

нужно заменить на
Код

    char str[n][9];



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
xamelon
Дата 27.2.2012, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 5.3.2011

Репутация: нет
Всего: нет



Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0394 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.