gpt4 book ai didi

c - 字符串如何填充数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:21:08 25 4
gpt4 key购买 nike

我正在创建一个简单的程序来查看字符串如何填充数组。

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

int main(void)
{
char string1[100];
int i;

printf("Enter sentence.\n");
fgets(string1, 100, stdin);

for (i=0; i<=15; i++)
puts(&string1[i]);
return 0;
}

我在理解字符串如何填充数组时遇到一些问题。我的期望是该字符串将完全存储在 string1[0] 中,并且任何其他索引都将变为空白。然而,当我抛出循环看我的假设是否成立时,结果发现每个索引都被字符串填满了。我是不是误解了字符串是如何填充数组的?

最佳答案

对于字符串“Hello!”,内存表示应该是这样的

+-------+-------+-------+-------+-------+-------+-------+
| 'H' | 'e' | 'l' | 'l' | 'o' | '!' | '\0' |
+-------+-------+-------+-------+-------+-------+-------+

索引 0 处的第一个单元格包含第一个字符。每个后续字符都包含在一个索引递增的单元格中。

puts 等库函数希望您传递第一个字符的地址,然后它们读取字符串直到 \0

因此,如果您简单地传递 string1&string1[0],它将解析为 'H' 的地址。

如果您传递&string[1],它将解析为'e' 的地址,并且库函数会认为那个是第一个字符,因为这是设计 C 字符串的约定。

关于c - 字符串如何填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42270849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com