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

时间:2019-11-13 11:52:02

标签: c

#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的最后一部分之前。  这里有什么信心吗?只是出于好奇,再次把一切都^^

1 个答案:

答案 0 :(得分:0)

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