Как заменить пробел на новую строку ("\ n") в строке с помощью C?Как заменить пространство новой строкой?
ответ
Ваш вопрос довольно расплывчатым.
Вот упрощенным фильтр, чтобы изменить все пробелы во входном потоке в новой строкой:
#include <stdio.h>
int main(void) {
int c;
while ((c = getchar()) != EOF) {
putchar(c == ' ' ? '\n' : c);
}
return 0;
}
EDIT:
Если вы заинтересованы в изменении строки, вы должны знать, что строка литералы не изменяются, попытка их изменения имеет неопределенное поведение.
Вы должны найти символы пробела и сохранить символы новой строки ('\n'
) при соответствующих смещениях.
Вы можете использовать указатель и strchr()
функцию:
char *p = strchr(string, ' ');
if (p != NULL) {
*p = '\n';
}
Handling все пробелы в цикле:
for (char *p = string; (p = strchr(p, ' ')) != NULL; p++) {
*p = '\n';
}
Или вы можете использовать for
цикл с индексной переменной:
for (size_t i = 0; string[i] != '\0'; i++) {
if (string[i] == ' ') {
string[i] = '\n';
//break; // uncomment the break if you want a single space changed
}
}
Хороший ответ его немного более простой, чем мой. –
Как насчет некоторой дополнительной проверки ошибок/регистрации, например 'if ((c == EOF) && ferror (stdin)) {perror (" getchar() failed ");}' сразу после 'while'-loop ...: -) – alk
@alk: 'getchar()' действительно возвращает 'EOF' как для конца файла, так и для ошибки чтения. Большинство программ-примеров unix блаженно игнорируют случай ошибки. Если вы хотите иметь дело с этим, ваше предложение будет прекрасным, но должно быть завершено с эквивалентными тестами на 'putchar()' и проверкой окончательного 'fflush (stdout)', что приведет к громоздкому коду с плохой педагогической ценностью. Лучшая обработка ошибок вызовет другой подход с явной буферизацией. – chqrlie
#include <stdio.h>
#include <string.h>
#define SIZE 50
int main(int argc, char **argv)
{
char string[] = "this is my string";
size_t length, c;
length = strlen(string);
for(c = 0; c < length; ++c)
{
if(string[c] == ' ')
{
string[c] = '\n';
}
}
printf("%s\n", string);
return 0;
}
Я думаю, что это должно быть 'c
Конец строки может содержать пробел, но тогда в большинстве случаев вы получите двойную новую строку, так что измените ее. Приветствия для подсказки –
'strlen()' возвращает 'size_t' не' int'. Поэтому 'c' и' length' должны быть действительно 'size_t'. – alk
Простая программа:
int c;//return of fgetc type is int
while(EOF!=(c=fgetc(file)))
putchar(c == ' ' ? '\n ' : c);
OP спрашивает * Как заменить пробел новой строкой в c *, а не * Как заменить все пробелы новыми строками * – chqrlie
@chqrlie: Возможно, выполнив: 'program
Thats очевидно ваш предположение ... но я думаю, что вы должны написать 'while ((c = fgetc (файл))! = EOF) putchar (c == ''? '\ n': c);' – chqrlie
- 1. Невозможно заменить пространство новой строкой в Vim
- 2. Как заменить пробел новой строкой
- 3. Заменить эхо с новой строкой
- 4. Emacs запросов заменить новой строкой
- 5. Как заменить строку в массиве новой строкой?
- 6. В Eclipse, как заменить символ новой строкой?
- 7. Заменить несвязанные слова слова с новой строкой
- 8. заменить все другие места с новой строкой
- 9. Заменить строку новой строкой в Python
- 10. PHP Regex найти и заменить новой строкой
- 11. Найти и заменить символ ASCII новой строкой
- 12. заменить последовательное пространство, вкладку, символы новой строки
- 13. Как заменить каждое 6-ое пустое пустое пространство новой строкой из файла?
- 14. замените место новой строкой
- 15. Как использовать sed, чтобы заменить первое пространство пустой строкой
- 16. Bash: Как заменить строку новой строкой в osx bash?
- 17. Как заменить все после заданной подстроки новой строкой в PHP?
- 18. Как заменить пространство «»
- 19. Как заменить пространство дефисом?
- 20. Найти и заменить новой строкой в коде Visual Studio
- 21. Заменить \ п с фактической новой строкой в Sublime Text
- 22. Заменить все UpperLetters в строке с новой строкой
- 23. Заменить символ трубы в XML новой строкой с использованием XSL
- 24. Разница между новой строкой StreamWriter и новой строкой StringBuilder?
- 25. Баша задать расширенные заменить строку с новой строкой
- 26. reg выражение - заменить текст новой строкой для всех записей - php
- 27. Заменить все пробела с новой строкой в CMD
- 28. Как заменить несколько строк новой строки одной новой строкой с использованием Ruby
- 29. пространство между каждой строкой
- 30. Linux заменить пространство для новой строки на строку
Ваш вопрос недостаточно точен: в каком контексте вы хотите заменить пространство новая линия? Вы читаете файл? сканирование строки? – chqrlie
... тоже какой * точно * считаете ли вы «* новой линией»? – alk
@chqrlie Лучше? Я создал этот вопрос, потому что я прочитал аналогичный вопрос, однако у него не было простого прямого прямого ответа, а также в его вопросе его код был грязным и имел переменные, которые не были нужны. –