首页 > 解决方案 > 如何将字符串输入到字符指针数组中?

问题描述

我的问题是如何将字符串输入到字符指针数组中?内存是在这里动态分配的还是什么?实际上存储在数组' name'中的是什么?

char *name[20];
printf("Enter a string:");
scanf("%s",name);
printf("%s",name);

此代码工作正常。它打印我输入的字符串。怎么可能这样char *name[20]对待char name[20]

标签: c

解决方案


scanfprintf期望一个字符数组,但你给了它一个指针数组。但是,他们无法区分,因为它们是可变的。这会导致未定义的行为,因此一切皆有可能。

这里可能发生的事情是scanf简单地将字符写入指针数组的内存printf并将数据视为字符,因为这两个函数都不知道您给它的内存块应该存储指针而不是字符。打印出第二个元素可能会给您第五个字符,因为您的系统有四个字节指针,所以第二个指针元素从第五个字节开始,因此是第五个字符。

同样,您的代码表现出未定义的行为,因此上一段只是推测。标准没有保证这一切,你永远不应该依赖它。


推荐阅读