Как ввести строку, используя scanf в c, включая пробелы - PullRequest
8 голосов
/ 20 февраля 2011

Пример, если пользователь вводит:

My name is James.

Используя scanf, я должен напечатать полную строку, т.е. My name is James., тогда я должен получить длину этой введенной строкии сохраните его в переменной int.

Ответы [ 4 ]

16 голосов
/ 20 февраля 2011

Попробуйте:

scanf("%80[^\r\n]", string);

Замените 80 на 1 меньше размера вашего массива. Посетите справочную страницу scanf для получения дополнительной информации

3 голосов
/ 20 февраля 2011

@ Splat имеет лучший ответ здесь, так как это домашняя работа, и часть вашего задания должна использовать scanf.Тем не менее, fgets гораздо проще в использовании и обеспечивает более точное управление.

Что касается вашего второго вопроса, вы получите длину строки с помощью strlen и сохраните ее в переменной типа * 1008.*.Хранить его в int неправильно, потому что мы не ожидаем, что строки длиной -5.Аналогично, хранить его в unsigned int или другом неподписанном типе неуместно, потому что мы не знаем точно, насколько велик целочисленный тип, и сколько именно места нам нужно для хранения размера.Тип size_t существует как тип, который гарантированно будет подходящего размера для вашей системы.

0 голосов
/ 31 августа 2014
#include "stdio.h"
int main()
{
    char str[20];
    int i,t;
    scanf("%d",&t); 
    while(t--){
        fflush(stdin);
        scanf(" %[^\t\n]s",str);// --scanf to accept multi-word string
        i = strlen(str);// -- variable i to store length of entered string
        printf("%s %d\n",str,i);// -- display the entered string and length of string
    }

    return 0;
}
0 голосов
/ 20 февраля 2011
#include "stdio.h"
#include "conio.h"

void main()
{
char str[20];
int i;
clrscr();
printf("Enter your string");
scanf("%[^\t\n]s",str); --scanf to accept multi-word string
i = strlen(str); -- variable i to store length of entered string
printf("%s %d",str,i); -- display the entered string and length of string
getch();

}

output :

enter your string : My name is james
display output : My name is james 16
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...