Он просто тут скрыт
Автору вроде бы с С строками надо было.
Он просто тут скрыт
Автору вроде бы с С строками надо было.
Если чесно, я так и не понял плюсы нужны или нет.
Похоже я все-таки додумался,еле еле, но додумался, благодаря вам, конечно же, целую вас)
Как по вашему все выглядит, нормально?
#include <iostream>
#include <string>
using namespace std;
int main()
{
setlocale(LC_ALL, "Rus");
char s[100], str[100], str1[100];
char s1[] = " hello";
cout << "Введите строку:";
gets_s(s);
strcpy_s(str, s);
for (int i = 0; i <= strlen(str); i++)
if (str[i] == ' ')
{
strncpy_s(str1, str, i);
strcat_s(str1, s1);
strcat_s(str1, s+i);
break;
}
strcpy_s(s, str1);
puts(s);
system("pause");
}
Это лишнее, можно s
и использовать.
И это тоже, можно сразу str1
вывести.
Лучше всегда ставить { }
в циклах/if, даже если там одна инструкция внутри, а то вызывает дискомфорт, ну и ошибиться проще при дописывании кода.
И
Сейчас упадет с ошибкой если ввести одно слово.
Как вариант простого исправления, можно добавить пробел в конец
#include <cstdio> // gets, puts, printf
#include <cstring> // strcat, ...
#include <windows.h> // system("pause")
#include <clocale> // setlocale
int main()
{
setlocale(LC_ALL, "");
char input[100] = { 0 }, result[100] = { 0 };
printf("Введите строку: ");
gets_s(input);
strcat_s(input, " ");
for (int i = 0; i < strlen(input); i++)
{
if (input[i] == ' ')
{
strncpy_s(result, input, i + 1);
strcat_s(result, "hello");
strcat_s(result, input + i);
break;
}
}
puts(result);
system("pause");
}
Или искать не только пробел, но и конец строки (i == strlen(input) - 1
), но тогда наверно еще что-то поменять нужно для обработки этого случая.