c - 数组不在 C 中存储/显示整个字符串

标签 c arrays string programming-languages

所以我有这段代码:

char address[1000] ;

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

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

当我输入例如“New York City”时,只会显示“New”,我不知道为什么。请帮助。 谢谢

最佳答案

你可以使用:

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

但使用 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

@ Chris Dodd 在其评论中提到了关于 fgets 并且您可能应该知道(如果您还不知道)fgets 添加了 '\n ' 也是。

如果不需要,可以借助strcspn函数将其删除:

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

您需要包含 string.h

关于c - 数组不在 C 中存储/显示整个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54026800/

相关文章:

c - 带有结构体指针数组的 strcpy() 的段错误

php - 使用 LAMP 在服务器中运行可执行的 C 程序 - 对 C 代码有哪些修改?

ios - 如何在调用索引后从数组中永久删除项目?

PHP 数组条件不起作用

c - 在 ncurses 上重绘

javascript - 根据 JSON 中可用的值将嵌套 json 转换为特定格式的字符串

ios - Objective C 中的 UserDefaults 数据验证

string - 如何在 Rust 中接受 Vec<String> 和 Vec<str> 作为函数参数

c - 问题查找字符串中给定子字符串的出现次数

c - 难以理解,尤其是在输入方面