На вывод попадают лишние символы - C (СИ)
Формулировка задачи:
При многократном (а иногда и при первом) вводе и выводе данных к выводимому начинает пририсовывать какие-то рожицы и прочие непечатные символы.
Программа принимает текст произвольных размеров, ищет в нем идентификаторы (слова начинающиеся с цифры, в данном случае) и создает новый текст, в котором нет строчек, в которых нет идентификаторов.
Вот код ввода:
Вот код функции вывода:
И все время выводит сам текст+ еще несколько символов в конце строки в виде каких-то загогулин и рожиц!
Просто ума не приложу где тут ошибка.
По идее- что с памятью, где-то счетчик цикла выбегает за границу массива, но на мой взгляд все точно...
#include<stdio.h> #include<malloc.h> #include<conio.h> #include<string.h> char**txt=NULL, **novii_txt=NULL,**txt2=NULL; int vibor,stroki,nov_stroki,end,m1,stroki2; stroki=m1=vibor=0; end=1; char b[80]; int i,z; i=0; //заголовок функции и проч. ... //... puts("\nVvedite text: "); fflush(stdin); gets(b); z=0; while(z!=1) if(b[0]!='\0') { txt2=(char**)realloc(txt2,i+1*sizeof(char*)); txt2[i]=(char*)malloc((strlen(b)+1)*sizeof(char)); strcpy(txt2[i],b); i++; gets(b); z=0; } else z=1; stroki2=i; txt=txt2; getch();
void VIVOD_TEXTA(char**txt3,int stroki3) { int i; printf("TEXT:\n\n"); for(i=0;i<stroki3;i++) puts(*(txt3+i)); getch(); }
Решение задачи: «На вывод попадают лишние символы»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <conio.h> void VIVOD_TEXTA (const char * ptr) { printf("TEXT:\n\n%s\n", ptr); getch(); } int main (int argc, char * argv[]) { char b[80]; memset(b, 0, sizeof(b)); puts("\nVvedite text: "); fflush(stdin); fgets(b, sizeof(b) - 1, stdin); VIVOD_TEXTA(b); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и стандартными функциями
- Определение функции вывода текста с указанием указателя на текст
- Ввод текста с помощью функции fgets в массив b
- Вывод текста с помощью функции printf и получение сигнала конца файла с помощью функции getch
- Вызов функции вывода текста с указанием введенного текста в качестве аргумента
- Конец программы с возвратом значения 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д