C% [] спецификатор преобразования и функции String - PullRequest
1 голос
/ 20 октября 2008

Мне трудно писать код, понимая формат спецификатора и строковых функций.

Моя цель - использовать %[] для чтения всех символов и пробелов, а затем использовать функцию strcpy, за которой следует функция strcat.

До сих пор мне удавалось вводить отдельные символы и распечатывать их, исключая пробелы.

вот код на данный момент;

int main(int argc, char** argv)  {
    char words[30];
    int loops;
    printf("How many letters would you like to enter? - ");
    scanf("%d",&loops);
    for(int i=0;i<loops;i++){
      printf("Provide some text as input:");
      scanf("%s", &words[i]);
    }
    printf("%d", strlen(words));

    printf("%s",&words);
    return (EXIT_SUCCESS);
}

Ответы [ 3 ]

5 голосов
/ 20 октября 2008

Я предполагаю, что вы хотите прочитать строку с максимальной длиной 29 символов от стандартного ввода до клавиши ВВОД.

Для этого вы можете использовать следующий код:

char phrase[30];
printf("Enter a phrase: ");
scanf("%29[^\n]", phrase);
printf("You just entered: '%s'\n", phrase);

%29[^\n] говорит о том, что нужно прочитать не более 29 символов (за исключением одного для нулевого терминатора) от начала до клавиши ENTER. Это включает любые пробелы, которые могут быть введены пользователем.

0 голосов
/ 20 октября 2008

Если вы хотите получить персонажа, вы бы использовали:

scanf("%c", &words[i]);

Вам также нужно завершить строку, когда вы закончите:

words[loops]='\0';

Когда вы печатаете свою последнюю строку, вам нужно передать указатель (а не адрес указателю):

printf("%s",words);

Ваш код также должен обрабатывать пользователь, который отменяет или хочет ввести более 29 символов.

0 голосов
/ 20 октября 2008

words [i] - это один символ в строке слов, и вы пытаетесь сохранить в нем строку 's'.
Чтобы прочитать один символ, используйте% c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...