Если возникает вопрос «Как добавить»? до конца строки? " Я должен ответов:
1) использовать strcat
добавить еще один символ, например:
#include<stdio.h>
#include<string.h>
int main(){
char new_string[101] = {0}; // +1 to be sure that enough place for '?' will be available
// {0} to init empty string
char string[100];
scanf("%s", string);
printf("original_number = %s\n", string);
int i;
int l = strlen(string) - 1;
for (i = 0; i <= l; i++){
new_string[i] = string[l - i];
printf("%c\n", new_string[i]);
}
strcat(new_string, "?");
printf("rev_number = %s\n", new_string);
}
2) положить ?
и добавить символ \0
после конца цикла, например:
#include<stdio.h>
#include<string.h>
int main(){
char new_string[101]; // +1 to be sure in place for '?'
char string[100];
scanf("%s", string);
printf("original_number = %s\n", string);
int i;
int l = strlen(string) - 1;
for (i = 0; i <= l; i++){
new_string[i] = string[l - i];
printf("%c\n", new_string[i]);
}
// add one more char
new_string[i] = '?';
// set the string end
new_string[i + 1] = '\0';
printf("rev_number = %s\n", new_string);
}
Обратите внимание, что если вы заполните весь массив 0
как char new_string[101] = {0};
, вам не нужно добавлять конец строки с new_string[i + 1] = '\0';
, поэтому второй вариант может быть короче, если инициализация аналогична первой т один
Для обоих фрагментах у меня есть тот же выход
UPDATE: более
Один совет по работе со строками. Когда вход выполнен с scanf
и вы знаете, сколько символов могут быть сохранены в массиве символов использовать следующий подход для предотвращения нарушения границ массива
char string[10]; // if you have 10 bytes
scanf("%9s", string); // ask not more than 9 characters
помните, что вам нужно еще один байты для «\ 0» (нулевой ограничитель).
'символ new_string [100]; '->' символ new_string [100] = {0}; ' – BLUEPIXY
Woah! , это сработало, не могли бы вы рассказать мне логику, char new_string [100] = {0}; –
Поскольку 'new_string' не был инициализирован, отображается мусор. Нужно инициализировать с помощью 0 заранее или добавить нулевой ограничитель ('' \ 0'') после символьной строки. – BLUEPIXY