Я узнал о некоторых умных функциях C, которым требуется цикл, но не должен работать тело цикла (например, strcpy()
), и поэтому это только одна строка.C Замена символа в одной строке
Просто из интереса, есть ли способ уменьшить замену всех символов новой строки \n
пробелами в одну строку следующим образом?
На данный момент я получил
char* newline_index;
while (newline_index = strchr(file_text, '\n'))
{
*newline_index = ' ';
}
я хотел бы сделать что-то вроде этого:
while (*strchr(file_text, '\n') = ' ');
, но, конечно, когда strchr возвращает нуль Постараюсь разыменовывать нуль указатель.
Я знаю, что использование strchr изменяет, потому что в нем содержится больше кода, но я бы хотел посмотреть, есть ли способ для одной линии, чтобы использовать это только с использованием стандартных функций c.
Edit: С некоторой помощью, это лучшее, что я придумал:
char* newline_index;
while ((newline_index = strchr(file_text, '\n')) && (*newline_index = ' '))
Если файл большой, то это будет очень медленным, чтобы сделать это, ' strchr' сканирует файл, поэтому потребуется время для сканирования файла снова и снова, вместо того, чтобы сканировать его один раз. – Guy
Это правда, но помните, что моя цель - сжатие, а не скорость. – Miguel
Вы хотите что-то вроде этого: char * newline_index; while ((newline_index = * strchr (file_text, '\ n')) && (newline_index!= NULL) && (newline_index = '')); ?? –