Другие языки программирования и технологии
И снова Си...помогите
#include<stdio.h>#include<conio.h>#include <iostream.h>FILE *f;int a,j,b,A[4][5];char name[20];int main(){ printf(" Vvedite ima faila: "); scanf("%s",&name); if (!(f=fopen(name,"wt"))) {printf("ошибка\n"); getch(); } printf("Vvedite 20 celix 4isel 4erez ENTER\n"); for(int i=0;i<20;i++) {scanf("%d",&a); fprintf(f,"]",a); } fclose(f); if (!(f=fopen(name,"at"))) {printf("ошибка\n"); getch(); } printf("Vvedite wtkjt 4islo\n"); scanf("%d",&b); fprintf(f,"\n%d",b); fclose(f); cout<<"massiv A[4][5]\n"; f=fopen(name,"r"); int C; while(!feof(f)){ for (int p=0;p<5;++p) { for (int j=0;j<4;++j) fscanf(f,"%d",&A[p][j]);} fscanf(f,"%d",&C);} fclose(f); for (int p=0;p<5;++p){ for (int j=0;j<4;++j) printf("=",A[p][j]); cout<<"\n";} cout<<"\n"<<c;>C) k++; int B[20]; int l=0; for (int p=0;p<5;++p) for (int j=0;j<4;++j) if (A[p][j]>C && l<=k){ B[l]=A[p][j]; l++;} for (int i=0;i<k;++i)>); if (!(f=fopen(name,"wt"))) //здесь файл не открывается...почему???? {printf("oschibka otkritij faila\n"); getch(); } fputs("resultat\n",f); fprintf(f,"Sformirovanniy massiv A[5][4]\n"); for (int p=0;p<5;++p){ for (int j=0;j<4;++j) fprintf(f,"]",A[p][j]); fprintf(f,"\n");} fputs("4islo b ",f); fprintf(f,"%d",b); fprintf(f,"Massiv B\n"); for (int i=0;i<k;++i)>); fclose(f); getch();}
printf(" Vvedite ima faila: ");
scanf("%s",&name);
Это код содержит уязвимость переполнения буфера
getch(); - это малопереносимая функция, лучше ей не пользоваться вообще. Тем более, что в данном случае она не нужна
printf("Vvedite 20 celix 4isel 4erez ENTER\n"); // Аффтар знатный албанец
for(int i=0;i<20;i++)
{scanf("%d",&a);
fprintf(f,"]",a);
}
Если вы думаете, что этот код делает что-то полезное, то вы ошибаетесь
if (!(f=fopen(name,"at")))
{printf("ошибка\n");
getch();
}
printf("Vvedite wtkjt 4islo\n");
scanf("%d",&b);
fprintf(f,"\n%d",b);
fclose(f);
Этот код кроме албанского содержит еще логическую ошибку - если файл не будет открыт, то все равно будет попытка считать оттуда данные.
cout<<"massiv A[4][5]\n";
Не следует мешать ввод-вывод из С и С++ -возможны глюки
f=fopen(name,"r");
int C; // а что, в начале вашей чудо-программы поставить это было несудьба?
Вообще забили на проверку открылся файл или нет.
while(!feof(f)) // А вот это - очень правильный подход. Луч света в темном царстве
if (!(f=fopen(name,"wt"))) //здесь файл не открывается... почему??? ?
{printf("oschibka otkritij faila\n");
getch(); }
По идее файл должен открываться. И если бы вы обрабатывали ошибки - узнали бы почему он не открывается.
вот так надо открывать файлы
FILE* fp = NULL;
fp = fopen( filename, "w" );
if( fp )
{
// Файл успешно открыт - работаем дальше
fclose( fp );
}
else
{
// Обработка ошибок
perror( "fopen" );
}
scanf("%s",&name);
Это код содержит уязвимость переполнения буфера
getch(); - это малопереносимая функция, лучше ей не пользоваться вообще. Тем более, что в данном случае она не нужна
printf("Vvedite 20 celix 4isel 4erez ENTER\n"); // Аффтар знатный албанец
for(int i=0;i<20;i++)
{scanf("%d",&a);
fprintf(f,"]",a);
}
Если вы думаете, что этот код делает что-то полезное, то вы ошибаетесь
if (!(f=fopen(name,"at")))
{printf("ошибка\n");
getch();
}
printf("Vvedite wtkjt 4islo\n");
scanf("%d",&b);
fprintf(f,"\n%d",b);
fclose(f);
Этот код кроме албанского содержит еще логическую ошибку - если файл не будет открыт, то все равно будет попытка считать оттуда данные.
cout<<"massiv A[4][5]\n";
Не следует мешать ввод-вывод из С и С++ -возможны глюки
f=fopen(name,"r");
int C; // а что, в начале вашей чудо-программы поставить это было несудьба?
Вообще забили на проверку открылся файл или нет.
while(!feof(f)) // А вот это - очень правильный подход. Луч света в темном царстве
if (!(f=fopen(name,"wt"))) //здесь файл не открывается... почему??? ?
{printf("oschibka otkritij faila\n");
getch(); }
По идее файл должен открываться. И если бы вы обрабатывали ошибки - узнали бы почему он не открывается.
вот так надо открывать файлы
FILE* fp = NULL;
fp = fopen( filename, "w" );
if( fp )
{
// Файл успешно открыт - работаем дальше
fclose( fp );
}
else
{
// Обработка ошибок
perror( "fopen" );
}
И на кой тут мне этот код нужен?
name заполнить нулями бы перед инициализацией и проверить после нее, что имя файла терминируется нулевым символом
Посмотри в отладчике, может ты где=то name затираешь
Похожие вопросы
- Кто знает язык Си? ПОМОГИТЕ ПОЖАЛУЙСТА!!!
- Язык Си. Помогите пожалуйста написать простую программу.
- надо написать код программы на языке си. помогите кто знает как!
- как закончить программу? (на си (помогите))
- и снова я, помогите=((((((((
- помоги с СИ++..
- Помогите написать программу со switch в СИ
- Помогите с задаче в СИ
- Помогите с программированием на Си
- Помогите написать пару программ на СИ