@forestyura
Java Dev

Замена в строке одного символа на другой, как сделать на Си?

Надо написать программу Замена в строке одного символа на другой на Си
Вот я сделал, но не работает, очень прошу помощи

#include <stdio.h>
#include <string.h>
int main ()
{
	char String[20];
	char new[1];
	char target[1];
	char editString[20];
	int i=0;

	printf("Enter string to edit  ");
	scanf("%s", String);

	printf("Enter targer symbol  ");
	scanf( "%s", target);

	printf("Enter new symbol  ");
	scanf( "%s", new);

	for(i=0; i<strlen(String); i++) 
	{
		if(String[i] == target[0]) 
		{

			editString[i] = new[0];
		}
		else
		{
			editString[i]=String[i];
		}
	}
	printf( "Editing string: %s", editString );
	printf( "\n");
	
  return 0;
}
  • Вопрос задан
  • 8190 просмотров
Решения вопроса 1
@MiiNiPaa
Основная проблема в том, что ваши массивы под строки символов замены размером в 1 чар. А писаться будет как минимум 2: введённый символ и символ конца строки.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
Хорошо бы в editString в конце еще дописывать '\0'. В таком виде как сейчас работает, пока массивы в стеке, стоит их начать выделять динамически и это у вас всплывет.
И заменить "new" на другое имя, т.к. new является служебным словом в С++, а от Си до С++ один шаг фактически :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы