#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.我输入的String的最后一部分之前。 这里有什么信心吗?只是出于好奇,再次把一切都^^
答案 0 :(得分:0)
您的字符串的大小为2。所以它只能从用户那里收集1个字符,因为在它后面,必须放置一个'\ 0'来标记字符串的结尾。
如果要放入10个字符,请尝试s[11]
。
这样,您可以收集10个字符,然后最后一个字符(s [10])将为'\ 0'(将在此处自动输入)。