Существует множество способов сделать разворот строк, и стоит потратить некоторое время на изучение, потому что это стандартный вопрос для интервью.
простая реализация для строк с нулевым завершающим в C
выглядит
char * reverse(char * string){
int i;
int len = strlen(string);
for (i = 0; i < len/2; i++){
char c = string[i];
string[i] = string[len - i - 1];
string[len - i - 1] = c;
}
return string;
}
Эта версия делает манипулировать строку, так что мы будем делать копию строки только в том случае.
После того, как у вас есть разворот строк, вам нужно будет запустить reverse
по каждому аргументу и распечатать его.
ПРИМЕЧАНИЕ: аргументы в стандартном консольном приложении, подобные этому, начинаются с имени программы, так как она была введена пользователем. Таким образом, если программа вызывается как ./my-program arg1 arg2
, argv[0]
будет "./my-program"
, поэтому мы пропустим argv[0]
Используя это, все, что вам нужно сделать, это обратный вызов по каждому аргументу. как так
int main(int argc, char ** argv){
int i;
char * copy;
for (i = 1; i < argc; i++){ // skip argv[0]
copy = strdup(argv[i]); // copy the string;
copy = reverse(copy);
printf("argv[%d] = \"%s\"\n", i, copy);
free(copy); // clean up the copy
}
}
Все вместе, вы получите
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char * reverse(char * string){
int i;
int len = strlen(string);
for (i = 0; i < len/2; i++){
char c = string[i];
string[i] = string[len - i - 1];
string[len - i - 1] = c;
}
return string;
}
int main(int argc, char ** argv){
int i;
char * copy;
for (i = 1; i < argc; i++){ // skip argv[0]
copy = strdup(argv[i]); // copy the string;
copy = reverse(copy);
printf("argv[%d] = \"%s\"\n", i, copy);
free(copy); // clean up the copy
}
}
вы хотите отменить имя исполняемого файла и с привет и 102? –
Просканируйте каждую строку аргумента, измените ее и распечатайте обратное значение. Вы можете изменить строки аргументов, хотя это не всегда одобрено во всех кругах программирования. Или вы можете предоставить хранилище для инвертированной строки. Или вы можете просто напечатать символы строк в обратном порядке. –