Как поставить пробел после запятой в строке?

В чём же проблема?
- Вопрос задан более года назад
- 275 просмотров
3 комментария
Средний 3 комментария
Есть же memmove, зачем руками копировать байты? Это скучное занятие.
Искать запятые можно с помощью strchr.
В Insert вы затираете завершающий ноль и не восстанавливаете его. По идее последний printf вам может выдать вашу строку с мусорным продолжением, так же может быть и SEGFAULT если не повезет.
Вы не контролируете выход за границы массива в Insert. Например, что будет, если введенная строка будет длиной в 255 байт и там надо будет вставить 2 пробела (хотя достаточно и одного, чтоб выход за границы массива случился в printf)?
В Insert вы затираете завершающий ноль и не восстанавливаете его.
res2001, Нет, не затирает. Первая итерация цикла как раз его копирует.
jcmvbkbc, Да, согласен. Завершающий ноль не затирается.
Но выход за границу массива все равно возможен, когда итоговая строка будет больше 255 символов.
Т.к. массив sentence лежит на стеке, то это может проявляться по разному.
Решения вопроса 1
Илья @Leytox Автор вопроса
for (int i = strlen(sentence); i > pos; i—) <
sentence[i + 1] = sentence[i];
>
sentence[pos] = ‘,’;
sentence[pos + 1] = ‘ ‘;
Ответ написан более года назад
sentence[pos] = ‘,’; не нужно, потому что функция вызывается только когда sentence[pos] == ‘,’;
Ответы на вопрос 1
«I’m here to consult you» © Dogbert
В чём же проблема?
for (int i = strlen(sentence); i >= pos; i--)
Должно быть
for (int i = strlen(sentence); i > pos; i--) < sentence[i + 1] = sentence[i]; >sentence[pos + 1] = ' ';
Пробелы
Символы пробела, табуляции, перевода строки (новой строки), возврата каретки, перевода страницы и вертикальной табуляции называются пробельными символами, поскольку они выполняют ту же функцию, что и пробелы между словами и строками на печатной странице — они упрощают чтение. Токены разделяются (разграничиваются) пробельными символами и другими токенами, например операторами и символами пунктуации. При синтаксическом анализе кода компилятор C игнорирует пробельные символы — кроме тех случаев, когда они используются как разделители или как компоненты символьных констант или строковых литералов. Используйте пробельные символы, чтобы сделать программу более удобочитаемой. Обратите внимание, что комментарии также обрабатываются компилятором как пробел.
См. также
Дополнительные ресурсы
Значок отказа согласно Закону Калифорнии о защите конфиденциальности потребителей (CCPA)
- Светлая
- Темная
- Высокая контрастность
- Предыдущие версии
- Блог
- Участие в доработке
- Конфиденциальность
- Условия использования
- Товарные знаки
- © Microsoft 2024
Дополнительные ресурсы
Значок отказа согласно Закону Калифорнии о защите конфиденциальности потребителей (CCPA)
- Светлая
- Темная
- Высокая контрастность
- Предыдущие версии
- Блог
- Участие в доработке
- Конфиденциальность
- Условия использования
- Товарные знаки
- © Microsoft 2024
Как добавить пробел в строку си
Регистрация: 16.03.2012
Сообщений: 11
Как поставить пробел?
Пишу программку, которая переписывает строку из .txt файла в другой .txt файл.
Необходимо чтобы строки не перезаписывались, а писались с новой строки(это сделано), но также чтобы после каждой строки был пробел.
Помогите разобраться! Заранее спасибо)
#include "stdafx.h" #include "windows.h" #include #include #include #include using namespace std; int _tmain() < FILE *file1, *file2; char* file_name = "D:\\file1.txt"; char load_string[100] = "none"; time_t tt; struct tm * ptm; char buf[BUFSIZ]; tt = time(NULL); ptm = localtime(&tt); strftime(buf, BUFSIZ, "D:\\tt%Y%m%d.txt", ptm); file1 = fopen(file_name, "r"); file2 = fopen(buf, "a"); fputs( "string", file1); if( file1 != 0 ) else fprintf(file2, load_string); // Вот здесь непонятно. Пишу fprintf(file2, load_string, " "); но пробела так и нет. // Или пишу fprintf(file2, " \n", load_string); - тогда пробел в начале строки. fclose(file1); fclose(file2); _getch(); >
Последний раз редактировалось Stilet; 30.03.2012 в 07:30 .
| random_name |
| Посмотреть профиль |
| Найти ещё сообщения от random_name |
Строки: как вставить пробел в строку


Вставить пробел в строку после каждого символа «.» «,» «!» или «?», если за этими символами не следует пробел
Вставить пробел после каждого символа «.» «,» «!» или «?», если за этими символами не следует.

Как вставить в строку пробел фиксированной длины?
Прошу подсказать, как вставить в строку пробел фиксированной длины?

Вставить в строку пробел после каждого символа
Дана строка. Вставить после каждого символа пробел.

Как вставить в TextBox текущее время, и через пробел вставить текст?
Я хочу сделать свою программку типа собеседника. Тоесть например вводишь в один TextBox вопрос , и.
Регистрация: 03.03.2009
Сообщений: 254
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
// inserting into a string #include #include using namespace std; int main () { string str="to be question"; string str2="the "; string str3="or not to be"; string::iterator it; // used in the same order as described above: str.insert(6,str2); // to be (the )question str.insert(6,str3,3,4); // to be (not )the question str.insert(10,"that is cool",8); // to be not (that is )the question str.insert(10,"to be "); // to be not (to be )that is the question str.insert(15,1,':'); // to be not to be(:) that is the question it = str.insert(str.begin()+5,','); // to be(,) not to be: that is the question str.insert (str.end(),3,'.'); // to be, not to be: that is the question(. ) str.insert (it+2,str3.begin(),str3.begin()+3); // (or ) cout str endl; return 0; }
6279 / 3564 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#include #include #include int main() { char word[7]="6789."; puts(word); memmove(&word[2], &word[1], 4); word[1] = ' '; puts(word); system("pause"); return 0; }
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Для полученной строки потребуется больше памяти, пробел туда не влезет. Можно создать строку большего размера, например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#include using namespace std; int main() { const int size = 7; char word[size]="6789."; cout word endl; for(int i = 0;i '.'; ++i) { if(word[i] == '7') { for(int j = size - 1; j != i; --j) { word[j] = word[j - 1]; } word[i] = ' '; break; } } cout word endl; return 0; }
Или новую строку создать, выделив память динамически.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Ввести строку символов и вставить пробел после каждого знака препинания
А как это будет написано на с#? "Ввести строку символов и вставить пробел после каждого знака.
Строки. Вставить пробел после каждой нечетной буквы в слове
1) Дано слово, посчитать, сколько раз входит в него сочетание «he» (Уже составил, см.ниже); 2).

Как вставить слово в строку или удалить из строки?
Здравствуйте! Спрашиваю, так как не мог найти утвердительного ответа в поиске. Как вставить слово.
Как вставить подстроку в строку напр. с 5-го символа исх. строки?
вопрос в заголовке я думаю всем ясен, не знаю что тут еще добавить
Или воспользуйтесь поиском по форуму: