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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с strcat 
V
    Опции темы
cmygeHm
Дата 17.12.2009, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код


#include <iostream>
#include <fstream>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <string>

using namespace std;

void main()
{
    fstream fs("in.txt", ios::in);
    fs.seekp(0);
    FILE* fpointer;
    if ((fpointer = fopen("in.txt", "r"))==NULL)
    {
        cout<<"Error opning file";
    }
    else 
    {
        char buf[1024];
        fgets(buf, 1024, fpointer);
        /*
        string s;            // когда читаю строку таким методом, то программа выполняется совершенно неправильно... 
                            //я и так бы оставил, но если кто подскажет, то будет лучше
        if (fs) getline(buf, sizeof(buf));
        else cout<<"error";
        */
        cout<<"First string: "<<buf<<endl<<"String length: "<<strlen(buf)<<endl;
        char *res = new char;
        ZeroMemory(res, sizeof(res));
        char tempChar;
        char *tempCharFromNumber;
        char buf2[20];
        for (int i = 0; i< strlen(buf); i++)
        {
            tempChar=fs.get();
            if (!isdigit(tempChar)) 
            {
                strcat(res, &tempChar);    //так запихивает в строку какую-то ерунду
                // т.е. если в tempChar содержится буква a, то в строку дописывается aMMMMMMput41
                //strcat(res, "d");    //так работает правильно и записывает вместо всех букв букву ДЭ
                //strcat(res, *tempChar);    //  error: illegal indirection
                                        //  'strcat' : cannot convert parameter 2 from 'char' to 'const char *'
                //strcat(res, tempChar);    // 'strcat' : cannot convert parameter 2 from 'char' to 'const char *'
            }
            else
            {
                tempCharFromNumber=itoa(i, buf2, 10);
                strcat(res, tempCharFromNumber);
            }
        }
        cout<<res;
        fs.close();
    }
    getch();
}


PM MAIL   Вверх
bsa
Дата 17.12.2009, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



strcat работает со строками, а не с символами. операция 
Код
char c;
strcat(x, &c);
недопустима, так как strcat ожидает в конце строки символа '\0', а его там нет!

getline нужно использовать так:
Код
std::ifstream file("file.txt");
std::string text;
std::string buf;
while(std::getline(file, buf))
   text += buf + "\n";

PM   Вверх
cmygeHm
Дата 17.12.2009, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо smile
PM MAIL   Вверх
bsa
Дата 17.12.2009, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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




M
bsa
cmygeHm, если ответ на вопрос получен, то пометь тему решенной

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

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

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

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

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


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

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


 




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


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

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