Массив не хранит / не выводит всю строку в C - PullRequest
0 голосов
/ 03 января 2019

поэтому у меня есть этот код:

char address[1000] ;

printf("Enter you address : ") ;
scanf("%s", &address) ;

printf(" Your address is : %s ", address) ;

Когда я набираю, например, «Нью-Йорк», будет отображаться только «Новый», и я не знаю почему. Помогите, пожалуйста. Спасибо

1 Ответ

0 голосов
/ 03 января 2019

Ну, вы можете использовать:

scanf(" %999[^\n]", address )

Но, вероятно, будет лучше (возможно, безопаснее) использовать fgets:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    char address[1000] ;

    printf("Enter you address : ") ;
    if ( fgets( address, sizeof(address), stdin) == NULL )
    {
        printf("Deal whith the Error\n");
        exit( EXIT_FAILURE );
    }

    printf("Your address is : %s ", address);
}

Выход:

Enter you address : New York City
Your address is : New York City

@ Крис Додд упомянул в своем комментарии о fgets и, вероятно, вы должны знать (если вы еще не знаете), что fgets также добавьте '\n'.

Если вам это не нужно, вы можете удалить его с помощью функции strcspn:

address[ strcspn( address, "\n" ) ] = 0;

Вам необходимо включить string.h.

...