Нужно написать код программы, пользователь вводит строку со словами и нужно заменит слова с 5 букв на компьютер, а с 4 букв удалить.
Я вот написала код, но проблема в том что у меня вводишь одно слово с 5 или 4 букв и оно заменяется, а если несколько слов то слова не заменяются. Помогите пожалуйста!
#include
#include
#include
void new_string(char*);
int main()
{
char S[100];
printf ("input word:n");
gets(S);
int i = strlen(S);
if (strlen(S)==4)
{
printf(" ");
}
else
if(strlen(S)==5)
{
printf("компьютер");
}
getch();
return 0;
}
Другие языки программирования и технологии
замена слов в строке в СИ
// Microsoft Visual Studio Express 2013 SP4 for Windows Desktop
#include <stdio.h>
#include <locale.h>
#include <string.h>
#include <stdbool.h>
#define BUFFER 100
#define SIZE BUFFER - 2
void clear(wchar_t*);
void setrus();
void getline(wchar_t*);
void putline(wchar_t*);
void delay();
void work(wchar_t*);
int main(void) {
wchar_t str[BUFFER];
setrus();
putline(L"Введите строку: ");
getline(str);
work(str);
putline(str);
delay();
return 0;
}
void clear(wchar_t* str) {
int i = 0;
do str[i] = 0; while (str[i++]);
}
void setrus() { _wsetlocale(LC_CTYPE, L"Russian_Russia.866"); }
void getline(wchar_t* line) { _getws_s(line, SIZE); }
void putline(wchar_t* line) { wprintf_s(L"%s\n", line); }
void delay() { fflush(stdin); getchar(); }
void work(wchar_t* line) {
wchar_t computer[] = L"компьютер";
wchar_t separator[] = L" ";
int _5 = 5, _4 = 4;
wchar_t tmp[BUFFER];
wchar_t* token;
wchar_t* context = NULL;
_Bool flag;
wcscpy_s(tmp, BUFFER, line);
clear(line);
token = wcstok_s(tmp, separator, &context);
while (token != NULL) {
flag = true;
if (wcslen(token) == _4) flag = false;
else if (wcslen(token) == _5) wcscat_s(line, BUFFER, computer);
else wcscat_s(line, BUFFER, token);
if (flag) wcscat_s(line, BUFFER, L" ");
token = wcstok_s(NULL, separator, &context);
}
}
#include <stdio.h>
#include <locale.h>
#include <string.h>
#include <stdbool.h>
#define BUFFER 100
#define SIZE BUFFER - 2
void clear(wchar_t*);
void setrus();
void getline(wchar_t*);
void putline(wchar_t*);
void delay();
void work(wchar_t*);
int main(void) {
wchar_t str[BUFFER];
setrus();
putline(L"Введите строку: ");
getline(str);
work(str);
putline(str);
delay();
return 0;
}
void clear(wchar_t* str) {
int i = 0;
do str[i] = 0; while (str[i++]);
}
void setrus() { _wsetlocale(LC_CTYPE, L"Russian_Russia.866"); }
void getline(wchar_t* line) { _getws_s(line, SIZE); }
void putline(wchar_t* line) { wprintf_s(L"%s\n", line); }
void delay() { fflush(stdin); getchar(); }
void work(wchar_t* line) {
wchar_t computer[] = L"компьютер";
wchar_t separator[] = L" ";
int _5 = 5, _4 = 4;
wchar_t tmp[BUFFER];
wchar_t* token;
wchar_t* context = NULL;
_Bool flag;
wcscpy_s(tmp, BUFFER, line);
clear(line);
token = wcstok_s(tmp, separator, &context);
while (token != NULL) {
flag = true;
if (wcslen(token) == _4) flag = false;
else if (wcslen(token) == _5) wcscat_s(line, BUFFER, computer);
else wcscat_s(line, BUFFER, token);
if (flag) wcscat_s(line, BUFFER, L" ");
token = wcstok_s(NULL, separator, &context);
}
}
могу на с# написать . на сколько я знаю с++ printf - это не замена, а вывод строки . исходная переменная не изменяется. вы где учитесь? да еще вы украинец. если вы задали этот вопрос, обучаясь на программиста то пора менять профессию
Сергей Шнайдер
я ещё только на первом курсе, по-этому ещё не совсем всё понимаю
Похожие вопросы
- замена слов в строках С++
- FASM. Замена символов в строке, используя подпрограммы.
- Помогите блок написать. На Си написать, как найти первое по алфавиту слово в строке.
- C# Парсинг слов из строки без регистра
- Програма на С++ Ввести с клавиатуры строку символов и перевернуть каждое четное слово в строке.
- Задача на строки в Си++
- Работа со строками в Си
- Удалить знаки пунктуации из строки. Язык Си.
- C++. Поменять местами слова в строке
- Как заменить слово в строке?Паскаль