我试图在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