Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

мусор при выводе в файл

37K
21 января 2009 года
gepa
16 / / 22.12.2008
проблема в том, что выводе инфы в файл появляется появляется в самом начале - мусор - "НээээНээээ"
входной и выходной файл прикреплены к теме
помогите от этого мусора избавится (компилятор Microsoft Visual C++ 6.0)
заранее спасибо

Код:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<io.h>
#include<string.h>
#include <malloc.h>

void main()
{
    char msA[100], ms[100], tmp[4];
    char* m_in, *mout;
    int i, j, r, kA, nA, kB, nB, NA;
   
    FILE *in, *out;
    if( (in = fopen("1.txt", "r")) == NULL )
        {
            puts("Net vhodnogo faila!"); exit(0);
        }
   
   
    m_in = new char;        
    fgets(ms, 100, in);          
    strcat(m_in, ms);
    fgets(ms, 100, in);
    strcat(m_in, ms);
    kA = atoi(ms);
    fgets(ms, 100, in);
    strcat(m_in, ms);

    r = 0;                                                      
    for(i = 0; i <kA; i++)
        {
            msA = atoi(ms+r*2);
            nA =1<< msA;
            r++;
        }  
       
    fgets(ms, 100, in);  
    strcat(m_in, ms);
    kB = atoi(ms);  
    fgets(ms, 100, in);  
    strcat(m_in, ms);
   
    r = 0;
    for(i = 0; i <kB; i++)
        {
            nB=1<< atoi(ms+r*2);
            r++;
        }
    fclose(in);
   
    if((nA & nB) == nA)
    {
        puts("Net reshenyi!");   exit(0);
    }

    out=fopen("2.txt","w");
    mout=new char;
    strcat(mout, m_in);
    strcat(mout, "Решениями уравнения А U Х = В  являются следующие множества:\n");
   
    NA = 1 << kA;
    for(i=1; i<NA; i++)
    {
        sprintf(tmp, "{ ");
        strcat(mout, tmp);
       
        for(j=0; j<kA; j++)
        if(i&(1<<j))  
            {
                sprintf(tmp,"%d  ", msA[j]);
                strcat(mout, tmp);
            }
        mout[strlen(mout)-1]='}';
        sprintf(tmp,"\n");
        strcat(mout, tmp);
    }

    write(fileno(out),mout,strlen(mout));
    fclose(out);
}
247
22 января 2009 года
wanja
1.2K / / 03.02.2003
 
Код:
....................      
    m_in = new char;        
    fgets(ms, 100, in);          
    strcat(m_in, ms);
...................

Во-первых, выделяя склероз под массив, неплохо бы указывать его размер. Во-вторых, ты делаешь strcat, не присвоив m_in начального значения, скорее всего, там лежит какой-нибудь мусор. Либо делай strcpy, либо перед strcat напиши *m_in=0.
37K
22 января 2009 года
gepa
16 / / 22.12.2008
Цитата: wanja
 
Код:
....................      
    m_in = new char;        
    fgets(ms, 100, in);          
    strcat(m_in, ms);
...................

Во-первых, выделяя склероз под массив, неплохо бы указывать его размер. Во-вторых, ты делаешь strcat, не присвоив m_in начального значения, скорее всего, там лежит какой-нибудь мусор. Либо делай strcpy, либо перед strcat напиши *m_in=0.



*m_in=0 уже делал, не получилось
а с strcpy заработало, спасибо

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог