Вы находитесь на странице: 1из 3

#include

#include
#include
#include

<stdio.h>
<io.h>
<locale.h>
<math.h>

/* */
#if defined(_WIN32)
#pragma warning(disable:4996)
#endif
#define DEBUG 0
int
int
int
int
int
int

create_file(const char *filename);


print_file(const char *filename);
append_counter(const char *filename);
change_1st_elem_and_1st_min(const char *filename);
delete_even_numbers(const char *filename);
insert(const char *filename, int new_elem, unsigned int pos);

// -
int main() {
char filename[] = "myfile.dat";
setlocale(LC_ALL, "rus");
if (create_file(filename)) {
return 1;
}
printf(" %s\n", filename);
if (print_file(filename)) {
return 1;
}
append_counter(filename);
print_file(filename);
return 0;
}
int create_file(const char *filename)
{
int number, i, n;
FILE *fp;
#if DEBUG
int test_numbers[] = { 2, 3, 9, 4, 1, 7, 5 };
#define N sizeof(test_numbers)/sizeof(test_numbers[0])
#endif
if ((fp = fopen(filename, "wb")) == NULL)
{
fprintf(stderr, "create_file: %s\n", filename);
return 1;
}
#if DEBUG

n = N;
fwrite(test_numbers, n * sizeof(int), 1, fp);
#else
printf(" %s, .\n\n"
" n = ", filename);
scanf("%d", &n);
for (i = 0; i < n; i++)
{
printf("%d-e = ", i + 1);
scanf("%d", &number);
fwrite(&number, sizeof(int), 1, fp);
}
printf(" \n\n");
#endif
fclose(fp);
return 0;
}
/*
* int print_file(const char* filename)
,
int.
.

*/
int print_file(const char* filename) {
int number, num_per_line = 1;
FILE *fp;
if ((fp = fopen(filename, "rb")) == NULL) {
fprintf(stderr, "print_file: %s\n", filename);
return 1;
}
while ( feof(fp)) {//,
fread(&number, sizeof(int), 1, fp);
if ( feof(fp))
// - ,
printf("%11d%c", number, (num_per_line++ % 5 = 0) ? \t
 : \n);
}
printf("\n\n");
fclose(fp);
return 0;
}
int append_counter(const char *filename) {
int *tmp;
int number, writing_number, i = 0, zeliy_number, counter = 0, count1 = 0
, number_for_fwrite = 2;
double sqr_number;
FILE *fp;
if ((fp = fopen(filename, "r+b")) == NULL) {
fprintf(stderr, "append_counter: %s\n", filename);

return 1;
}
if ( fread(&number, sizeof(int), 1, fp)) {
fprintf(stderr, "append_counter: \n");
fclose(fp);
return 2;
}
rewind(fp);
//fseek(fp, (0) * sizeof(int), SEEK_SET);
while ( feof(fp)) {
fread(&number, sizeof(int), 1, fp);
if ( feof(fp))
{
sqr_number = sqrt(number);
zeliy_number = (int)sqr_number;
if ((sqr_number == zeliy_number) && (zeliy_number % 2 ==
1))
counter++;
count1++;
}
}
fseek(fp, (0) * sizeof(int), SEEK_END);
for (i = 1;i <= count1; i++)
{
fread(&number, sizeof(int), 1, fp);
fseek(fp, (0) * sizeof(int), SEEK_CUR);
fwrite(&number, sizeof(int), 1, fp);
fseek(fp, (count1 - i-1) * sizeof(int), SEEK_SET);
}
fseek(fp, (0) * sizeof(int), SEEK_SET);
fwrite(&counter, sizeof(int), 1, fp);
fclose(fp);
return 0;
}

Вам также может понравиться