我知道我可以使用gets(char *)
从包含空格的用户那里获取字符串输入,但我读到了缓冲区溢出问题。使用strcpy
,strcmp
(以及其他一些函数)并不安全,我们应该使用strncpy
,strncmp
并明确提及输入的大小。 Stack Overflow上的一些人告诉我。所以,我担心使用gets
来获取用户的输入还是安全的?如果安全告诉我,我将继续使用它。如果没有,那么另一种方法是从用户安全地获得间隔字符串输入?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *a[2];
char b[] = "first";
char c[] = "second";
int s1; //,s2;
// printf("\nLong you want your %s string to be: \n",b);
//scanf("%d",&s1); fflush(stdin);
//printf("\nLong you want your %s string to be: \n",c);
// scanf("%d",&s1); fflush(stdin);
int i;
for(i=0; i<2; i++) {
printf("\nLong you want your %s string to be: \n",b);
scanf("%d",&s1); fflush(stdin);
a[i] = (char *) malloc(s1*sizeof(char));
}
printf("\nEnter the first string: \n");
scanf("%s", a[0]); fflush(stdin);
printf("\nEnter the second string: \n");
scanf("%s", a[1]); fflush(stdin);
printf("\nThe first string is: %s\n", a[0]);
printf("\nThe second string is: %s\n", a[1]);
}
答案 0 :(得分:-2)