visual studio中gets_s函数有什么要注意?
#include<stdio.h>#include<stdlib.h>#include<string.h>intmain(void){char*s;inti,l;s=(c...
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
char *s;
int i,l;
s = (char *)malloc(80);
if (!s)
{
printf("error");
return 1;
}
gets(s);
l = strlen(s);
for (i = l - 1; i >= 0; i--)
putchar(s[i]);
free(s);
system("pause");
return 0;
}
这个程序功能是把一个字符串倒着输出,在dev c++中能用,visual studio中不能编译通过,即使改用gets_s也不行,为什么?怎么解决? 展开
#include<stdlib.h>
#include<string.h>
int main(void)
{
char *s;
int i,l;
s = (char *)malloc(80);
if (!s)
{
printf("error");
return 1;
}
gets(s);
l = strlen(s);
for (i = l - 1; i >= 0; i--)
putchar(s[i]);
free(s);
system("pause");
return 0;
}
这个程序功能是把一个字符串倒着输出,在dev c++中能用,visual studio中不能编译通过,即使改用gets_s也不行,为什么?怎么解决? 展开
1个回答
展开全部
因为Visual Studio用的是老的C标准,即C89,gets函数(包括Visual Studio中的gets_s)要求函数参数必须是char数组名,不能是char指针
现在的dev C++用的是C99标准,gets函数的参数允许使用char指针(另外可以使用//单行注释,变量定义位置可任意等从C++移植的新特性,这都是C89标准不支持的)
现在的dev C++用的是C99标准,gets函数的参数允许使用char指针(另外可以使用//单行注释,变量定义位置可任意等从C++移植的新特性,这都是C89标准不支持的)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |