gpt4 book ai didi

c - fgets - 数组大小和 int num 之间的差异

转载 作者:行者123 更新时间:2023-11-30 21:26:50 25 4
gpt4 key购买 nike

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

int main()
{
char s[2];
printf("Enter some things here: ");
fgets(s, 10, stdin);
// strrev(s);
printf("\nText: %s", s);
printf("\nsize: %d\n", sizeof(s));
for(int i = 0; i < 10; i++)
printf("%c\n", s[i]);
return 0;
}

//CONSOLE:
/*Enter some things here: abcdefghiklmn

Text: abcdefghi
size: 2
a
b
(this is a symbol)



g
h
i

*/

当我使 fgets 读取的“INT”大于 arra 的大小时,使用 fgets 时出现问题(图片)那么其他字母去了哪里?内存中到底发生了什么?谢谢大家!

**更新:谢谢大家。顺便说一句,我注意到无论任何“字符串”和 s 的大小(小于“int” - 基本上只是一些测试),输出都将是 1. 存储在数组 s 中的 2.奇怪的符号(可能是构建字符串的“\0”) 3. 空白空白空白... 4.我之前输入的字符串的最后一部分。 这里有什么信心吗?只是一些好奇心,谢谢大家^^

最佳答案

你的字符串的大小为2。所以它只能从用户那里收集1个字符,因为在它后面,它必须放置一个'\0'来标记字符串的结尾。如果你想输入 10 个字符 - 尝试 s[11]。这样你可以收集10个字符,然后最后一个字符(s[10])将是'\0'(将自动输入)。

关于c - fgets - 数组大小和 int num 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58836527/

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