scanf()在读取时不检查边界,所以可能会造成内存泄露,所以vs2013提供了scanf_s()来替代,在调用时,必须提供给scanf_s一个数字以表明读取多少位字符,用法为scanf_s("%c",letter,sizeof(letter)),否则,即使ctrl+f7和ctrl+f5通过了,程序的运行结果也可能与自己所期望大相径庭的。
在临清等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计制作、网站设计 网站设计制作按需策划设计,公司网站建设,企业网站建设,成都品牌网站建设,全网营销推广,成都外贸网站建设公司,临清网站建设费用合理。
如果非要用scanf函数,那么通过以下两种方式可以禁止警告:
(1)右击项目——属性——c/c++——预处理器——预处理器定义中增加_crt_secure_no_warnings,然后点确定,退出。
(2)在函数最顶头进行定义:#define
_crt_secure_no_warnings,也可以禁止报错警告。
字符串转整数可以有两种方法:
1.使用c语言自带的库函数:atoi。
函数原型:int atoi(const char *nptr);
功能:把字符串转成整型数。
例如:
#include stdlib.h
#include stdio.h
int main(void)
{
int n;
char *str = "12345";
n = atoi(str);
printf("int=%d\n",n);
return 0;
}
/*
输出:
int = 12345
*/
2.可以自己编写一个转换函数:
#include stdio.h
#include stdlib.h
int atoi(char *s)
{
int t=0;
while(*s){
t=t*10+*s-'0';
s++;
}
return(t);
}
int main ()
{
char a[]="12345";
int n = atoi(a);
printf("n=%d ",n);
return 0;
}
/*
输出:
n = 12345
*/
/*简单一点,能看懂不?*/
#include
stdio.h
int
main()
{
int
i=0,n;
printf("输入整数:");
scanf("%d",n);
while(n!=0)
{
n=n/10;
i++;
}
printf("是一个%d位的数\n",i);
return
0;
}
# includestdio.h
int fun(int x)//自定义函数
{
int a[8],k=0;
while(x)
{
a[k++]=x%10;//提取各个位上的数,存储你在数组a中
x/=10;
}
for(int i=k-1;i=0;i--)
printf("%d ",a[i]);
}
int main()
{
int x;
scanf("%d",x);
fun(x);//调用函数
return 0;
}