В строке удалить последующие вхождения первой буквы - C (СИ) (74057)
Формулировка задачи:
[Только начала изучение си. Нужно в строке удалить последующие вхождения первой буквы. Написала программу и не могу понять, почему не выводится результат на экран
#include <stdio.h> #include <string.h> int main(void) { char source[100]; char result[100]; char en[1]; int i,len; printf("liza"); scanf("&s",source); en[0]=source[0]; for (i=1;i<=100;i++) { if (en[0]!=source[i]) { result[i]=source[i]; } } printf("result is:%s",result); return 0; }
Решение задачи: «В строке удалить последующие вхождения первой буквы»
textual
Листинг программы
#include <stdio.h> #include <string.h> int main( void ) { FILE* fi; const int len = 100; char source[ len ]; char result[ len ]; // пробуем открыть файл только для чтения fi = fopen( "str1.txt", "r" ); if ( fi == NULL ) { // если не смогли открыть файл printf( "File read error\n" ); // сообщаем об этом return 1; // и выходим из программы } fgets( source, len, fi ); // это мы считываем строку. char en = source[ 0 ]; // ТОЛЬКО потом мы можем запомнить ее первый символ result[ 0 ] = en; // сразу его запишем в результирующую строку int i, j; // в цикле в результирующую строку запишем только нужные символы for ( i = 1, j = 1; i < len; ++i ) { if ( en != source[ i ] ) result[ j++ ] = source[ i ]; } fclose( fi ); // закроем файл // пробуем открыть файл только для записи - если файл существовал ранее - он будет перезаписан fi = fopen( "str1.txt", "w" ); if ( fi == NULL ) { // если не смогли открыть файл printf( "File write error\n" ); // сообщаем об этом return 1; // и выходим из программы } fprintf( fi, "result is : %s\n", result ); // пишем в файл результирующую строку fclose( fi ); // закроем файл return 0; }
Объяснение кода листинга программы
В этом коде используется язык программирования C для решения задачи удаления всех последующих вхождений первой буквы из строки. Вот список действий, которые выполняются в коде:
- Включаются необходимые заголовочные файлы:
stdio.h
содержит функции для ввода и вывода данныхstring.h
содержит функции для работы со строками
- Определяется функция main(), которая является точкой входа в программу
- Создаются необходимые переменные:
fi
- указатель на файл, который будет использоваться для чтения и записиlen
- размер массива, который будет использоваться для хранения исходной и результирующей строкsource
- массив для хранения исходной строкиresult
- массив для хранения результирующей строки
- Пробуется открыть файл
str1.txt
для чтения. Если файл не может быть открыт, программа выводит сообщение об ошибке и завершается с кодом возврата 1. - Считывается исходная строка из файла в массив source с помощью функции
fgets()
. Первый символ исходной строки сохраняется в переменнойen
. - Первый символ из исходной строки записывается в начало результирующей строки.
- Инициализируются переменные i и j, которые будут использоваться в цикле. Переменная i будет использоваться для индексации исходной строки, а переменная j - для индексации результирующей строки.
- В цикле записываются в результирующую строку только те символы исходной строки, которые не равны первому символу.
- Закрывается файл, открытый для чтения.
- Пробуется открыть файл
str1.txt
для записи. Если файл не может быть открыт, программа выводит сообщение об ошибке и завершается с кодом возврата 1. - В файл, открытый для записи, записывается результирующая строка с помощью функции
fprintf()
. - Закрывается файл, открытый для записи.
- Возвращается код успешного завершения программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д