Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2010, 11:31   #1
серг
Форумчанин
 
Регистрация: 02.11.2009
Сообщений: 179
По умолчанию работа с именами файлов

приведен рабочий код. Как сделать так чтобы имена файлов введеные в массивы namefile1 и namefile2 были именами файлов ?
у меня получается так что именами файлов являются идентификаторы этих массивов т е namefile1 и namefile2

в тексте все выделено

Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
#include <time.h>
#include <clocale>

int main (void)
{
setlocale(LC_ALL, "Russian");
srand (time (0));
int MAS[20],i;
int ch=0,n=0;
printf("введите имя файла в который записываются исходные данные ");
char namefile1 [256];
getchar();
gets(namefile1);
FILE *intxt; //Запись исх.данных в файл //
intxt = fopen ("D:\\namefile1","w+t") ;
for (i=0 ;i<=19;i++)
{
*(MAS+i) = rand()%100;
fprintf (intxt, "%4d", *(MAS+i));
printf ("%d\n",*(MAS+i));
}
fclose (intxt);
FILE *out; //Чтение массива из файла //“1.txt” 
out = fopen ("D:\\namefile1","rt") ;
for (i=0 ;i<=19;i++)
{
fscanf(out,"%4d",&(*(MAS+i)));
}
printf("введите имя файла в который записывается результат ");
char namefile2 [256];
getchar();
gets(namefile2);
FILE *save; //Обработка и запись //результата
save = fopen ("D:\\namefile2","w+t") ; //в другой файл 
for (i=0 ; i<=19; i++) 
{ 
if (*(MAS+i)%2==0)
   ch++;
   else n++;
}
fprintf (save,"%d", ch);
fprintf(save,"\n");
fprintf (save,"%d", n);
printf ("kolichestvo chet= %d \n\n", ch);
printf ("kolichestvo nechet= %d \n\n", n);
fclose (save);
fclose (out);

//ВТОРАЯ ЧАСТЬ

int j,N=10,M=6;// Размерность масива 
    int mas[10][6];

    FILE *massiv2; //В файл "1.txt" //дописывается
	massiv2 = fopen ("D:\\namefile1","at") ; //двумерный массив
	fseek (massiv2,0,0);
    fprintf (massiv2,"\n\n");
    // Заполнение массива
	for (i=0;i<N;i++){	
		for (j=0;j<M;j++){ 
             *(*(mas+j)+i) = rand()%200-100;
                       fprintf (massiv2,"%d\t", *(*(mas+j)+i));
					   printf ("%d\t",*(*(mas+j)+i));
		                }    
                      printf ("\n") ;                                  
fprintf (massiv2,"\n") ;
}
fclose (massiv2);

FILE *readmassiv2; //Чтение матрицы из файла //"1.txt"
readmassiv2 = fopen ("D:\\namefile1","rt");

for (i=0 ; i<N ; i++){ 
for (j=0 ; j<M; j++){
fscanf(readmassiv2,"%d\t",&*(*(mas+j)+i));
}
fscanf(readmassiv2,"\n") ;
}

FILE *obrabotkamassiv2; //Обработка, и результат
obrabotkamassiv2= fopen ("D:\\namefile2","at") ; //дописывается в файл //"2.txt" 
fprintf (obrabotkamassiv2,"\n\n" );
// находим отрицательные элементы массива и если элемент меньше нуля то умножается на -1 (получается положительный)
    for (i=0;i<N;i++)	
		for (j=0;j<M;j++)
				if (*(*(mas+j)+i)<0)
					*(*(mas+j)+i)=*(*(mas+j)+i)*(-1);
	                cout<<"\n";
                   // Вывод массива
		for (i=0;i<N;i++)	
	   	   {
			   for (j=0;j<M;j++)
				{
				printf(" %d",*(*(mas+j)+i));
				fprintf(obrabotkamassiv2,"%d",*(*(mas+j)+i));
				}
                printf("\n");
				fprintf(obrabotkamassiv2,"\n");				
		        }
             fclose (obrabotkamassiv2);
             fclose (readmassiv2);

	FILE *file;
    char _Buf[132];
	file = fopen("D:\\namefile2","r");
	{
		fread(_Buf,66,2,file);
		printf("\n");
		printf("VbIvod iz bufera");
		printf("\n");
		printf(_Buf,132);
		fclose(file);
	}

             _getch ();
             return 0;
}
серг вне форума Ответить с цитированием
Старый 25.02.2010, 15:06   #2
pproger
C++ hater
Старожил
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

уж сколько раз твердили миру
не юзать gets(), так вот ведь диво,
всем пофик на тамошний факт,
что buffer overflow вызывая,
(строку на вход не проверяя),
рушится софт во время сдачи
и мысль одна: о пересдаче.

по теме: man strcat
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В каждый момент на форме отображаются только два списка с именами и фамилиями Johny91 Помощь студентам 4 08.11.2013 14:44
Создать в каталоге, 35 подкаталогов с именами лат. алфавита и 0-9 XerSon Помощь студентам 2 02.12.2009 19:31
имена на русском поменять местами с именами на английском Aion Помощь студентам 5 14.12.2008 15:26
Проблема с рускими именами файлов. ASP фтвкнцф PHP 1 07.08.2008 21:16
Проблема с именами файлов. Nyusya Общие вопросы C/C++ 1 15.03.2008 06:54