Fget精确读取4095个字符

时间:2019-05-27 19:07:37

标签: c fgets

我试图在char *中输入10k个字符,它与一个测试用例有关,最大不能超过10k个字符。我尝试了两种方法,两者给出的输出相同,即fgets()/ scanf()仅读取4096字符。 下面列出了这两种方法。

方法1: 在此,我使用fgets()立即获取完整的字符串。

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

#define MAX 100001

int main()
{
    char * str;
    //alocating the MAX size as the input has no details about the length
    str = (char *)malloc(MAX*sizeof(char));
    if(str != NULL)
    {
        fgets(str,MAX,stdin);

        printf("%d\n",strlen(str));
    }
}

方法2: 在这种方法中,我一次输入一个字符,然后将该字符放入字符串中。

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

#define MAX 100001

int main()
{
    char * str;
    char read;
    str = (char *)malloc(MAX*sizeof(char));
    if(str != NULL)
    {
        long int i = 0;
        do
        {
            scanf("%c",&read);
            str[i] = read;
            i++;

        } while (read != '\n');      

        printf("%s\n",str);

        printf("%ld\n",strlen(str));
    }
}

这是测试案例的链接。 here

0 个答案:

没有答案