Считываю символ с файла/потока и получаю останов - C (СИ)
Формулировка задачи:
#define _CRT_SECURE_NO_WARNINGS #include <conio.h> #include <stdio.h> #include <stdlib.h> float** input(int *n, int *m); void sort(int n, int m, float **ar); void output(int n, int m, float **ar); int main() { int n, m; float **ar; ar = input(&n, &m); printf("After input"); sort(n, m, ar); printf("After sort"); output(n, m, ar); _getch(); } float** input(int *n, int *m) { int i, j; float **a; FILE *base; printf("Error1"); base = fopen("d.txt", "r" ); printf("Error2");//исполняет и выдаёт останов fscanf(base, "%d\n", n); /*пробовал и "fscanf(base, "%d\n", &n);", хотя & не нужен, потому что у меня размеры массивов указатели*/ printf("Error3"); fscanf(base, "%d\n", m); printf("Error4"); a = (float**)malloc(*n*sizeof(float*)); for (i = 0; i < *n; i++) a[i] = (float*)malloc(*m * sizeof(float)); printf("Error5"); for (i = 0; i < *n; i++) { fscanf(base, "\n"); for (j = 0; j < *m; j++) { fscanf(base, "%f\t", a); } } printf("Error6"); fclose(base); printf("Error7"); return a; } void sort(int n, int m, float **ar) { int i, j; int j1, j2; int k; int p = n / 2; float max, min; min = 0; max = 0; j1 = 0; j2 = m; for (k = 0; k < p; k++) { for (i = 0; i < n; i++) { for (j = j1; j < m; j++) { if (ar[i][j] < ar[i][j + 1]) { min = ar[i][j]; ar[i][j] = ar[i][j + 1]; ar[i][j + 1]=min; } } } j1++; for (i = n; i < -1; i--) { for (j = j2; j < 0; j--) { if (ar[i][j] < ar[i][j + 1]) { max = ar[i][j + 1]; ar[i][j + 1] = ar[i][j]; ar[i][j] = max; } } } j2--; } } void output(int n, int m, float **ar) { int i, j; FILE *window; window = fopen("d.txt", "a"); for (i = 0; i < n; i++) { fprintf(window, "\n"); for (j = 0; j < m; j++) { fprintf(window, "%f\t", ar[i][j]); } } fclose(window); }
Решение задачи: «Считываю символ с файла/потока и получаю останов»
textual
Листинг программы
base = fopen("d.txt", "r" ); if(NULL == base) { puts("cant open input file"); exit(1); }
Объяснение кода листинга программы
- Открывается файл
d.txt
для чтения -base = fopen(
d.txt,
r);
- Проверяется, успешно ли открылся файл. Если нет, выводится сообщение об ошибке и программа завершается -
if(NULL == base) { puts(
cant open input file); exit(1); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д