#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);
}
мусор при выводе в файл
входной и выходной файл прикреплены к теме
помогите от этого мусора избавится (компилятор Microsoft Visual C++ 6.0)
заранее спасибо
Код:
Код:
....................
m_in = new char;
fgets(ms, 100, in);
strcat(m_in, ms);
...................
m_in = new char;
fgets(ms, 100, in);
strcat(m_in, ms);
...................
Во-первых, выделяя склероз под массив, неплохо бы указывать его размер. Во-вторых, ты делаешь strcat, не присвоив m_in начального значения, скорее всего, там лежит какой-нибудь мусор. Либо делай strcpy, либо перед strcat напиши *m_in=0.
Цитата: wanja
Код:
....................
m_in = new char;
fgets(ms, 100, in);
strcat(m_in, ms);
...................
m_in = new char;
fgets(ms, 100, in);
strcat(m_in, ms);
...................
Во-первых, выделяя склероз под массив, неплохо бы указывать его размер. Во-вторых, ты делаешь strcat, не присвоив m_in начального значения, скорее всего, там лежит какой-нибудь мусор. Либо делай strcpy, либо перед strcat напиши *m_in=0.
*m_in=0 уже делал, не получилось
а с strcpy заработало, спасибо