Массив строк. Неверно выводится на экран - C (СИ)
Формулировка задачи:
#include "stdafx.h" #include <conio.h> #include <locale.h> #include <string> char *buf; int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL,"RUS"); char filename[20]={}; // printf("Введите название файла:"); //gets(filename); FILE*f=fopen("file.txt","rt"); if ((f = fopen("file.txt", "rt")) == NULL ) { printf("Не удается открыть файл!"); exit(1); } fseek(f,0,SEEK_END); int size_of_file=ftell(f); fseek(f,0,SEEK_SET); buf=(char*)malloc(size_of_file+1); buf[size_of_file+1]=0; fread(buf,size_of_file,1,f); puts(buf); //char str1[100]={}; char rez[100]={}; int cnt=0; char exit[5]="exit"; int len=255; //Длина строки char **Massiv=(char**)malloc((size_of_file+1)*sizeof(char)); for (int i=0;i<(size_of_file+1);i++) Massiv[i]=(char*)malloc(len); int cntmass=0; while(cnt<size_of_file-2) { int i=cnt,cntrez=0; for(i;i<size_of_file;i++,cntrez++) { if(buf[i]!=' ') rez[cntrez]=buf[i]; else { cnt=i; break; } } Massiv[cntmass]=rez; printf("%s ",Massiv[i]); cntmass++; int y=strlen(rez); for(int j=0;j<=y;j++) rez[j]=0; cnt++; if(i==size_of_file) { cnt=i; } } /*for(int i=0;i<cntmass;i++) printf("\n%s\n",Massiv[i]);*/ free(Massiv); fclose(f); getch(); return 0; }
Решение задачи: «Массив строк. Неверно выводится на экран»
textual
Листинг программы
Massiv[i]=(char*)malloc(len); memset(Massiv[i],0,len); //Инициализация нулями;
Объяснение кода листинга программы
Massiv
- это массив, который будет содержать строки.i
- это индекс, который используется для обращения к каждому элементу массива.len
- это длина каждой строки в массиве.Massiv[i]
- это обращение к элементу массива по его индексу.malloc
- это функция, которая выделяет память для переменной типаchar*
.memset
- это функция, которая заполняет область памяти определенными значениями. В данном случае, она заполняет память, выделенную для элемента массива, нулями.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д