C: как добавить / объединить пробелы " x " в строку
Я хочу добавить переменное количество пробелов в строку в C и хотел бы знать, есть ли стандартный способ сделать это, прежде чем я реализую его сам.
до сих пор я использовал некоторые уродливые способов сделать это:
- пожалуйста, предположим, что прежде чем я вызвал любую из приведенных ниже функций, я позаботился о том, чтобы иметь достаточно памяти, выделенной для пространств, которые я хочу объединить
Это один из способов, который я использовал:
add_spaces(char *dest, int num_of_spaces) {
int i;
for (i = 0 ; i < num_of_spaces ; i++) {
strcat(dest, " ");
}
}
этот лучше в производительность, но и не выглядит стандартной:
add_spaces(char *dest, int num_of_spaces) {
int i;
int len = strlen(dest);
for (i = 0 ; i < num_of_spaces ; i++) {
dest[len + i] = ' ';
}
dest[len + num_of_spaces] = '';
}
Итак, у вас есть стандартное решение для меня, поэтому я не изобретаю колесо?
3 ответов
Я бы сделал
add_spaces(char *dest, int num_of_spaces) {
int len = strlen(dest);
memset( dest+len, ' ', num_of_spaces );
dest[len + num_of_spaces] = '';
}
но, как заявил @self, функция, которая также получает максимальный размер dest (включая ''
в этом примере) безопаснее:
add_spaces(char *dest, int size, int num_of_spaces) {
int len = strlen(dest);
// for the check i still assume dest tto contain a valid '' terminated string, so len will be smaller than size
if( len + num_of_spaces >= size ) {
num_of_spaces = size - len - 1;
}
memset( dest+len, ' ', num_of_spaces );
dest[len + num_of_spaces] = '';
}
пожалуйста, предположим, что прежде чем я вызвал любую из приведенных ниже функций, я взял важно иметь достаточно памяти, выделенной для пространств я хочу конкатенат
так main
предположим, вы объявили свой массив как char dest[100]
затем инициализируйте строку с помощью speces.
как
char dest[100];
memset( dest,' ',sizeof(dest));
так вам не нужно даже add_spaces(char *dest, int num_of_spaces)
.