#include <stdio.h>
#include <stdlib.h>
int main()
{
int size=10;
char string1[50];
char *string2;
string2=(char *)malloc(size*sizeof(char));
fgets(string1,10,stdin);
printf("%s",string1);
fgets(string2,10,stdin);
printf("%s",string2);
}
此代码中有两个字符串,一个是数组,另一个是使用指针动态创建的。
答案 0 :(得分:1)
fgets
占用字符串最大长度的原因。strlen
计算字符串的长度。为null终止符添加1
。请注意,当您使用'\n'
并且输入中包含fgets
时,'\n'
是字符串的一部分。scanf
,并将%ms
格式和指针传递给char*
。这将以确切的长度分配字符串,但您的程序将不那么便携。显然,您需要释放这些字符串以避免内存泄漏。