读书人

为何模运算无法输出

发布时间: 2013-01-28 11:49:56 作者: rapoo

为什么模运算无法输出?
本人刚开始自学C语言,很简单的一段代码,但被错误难倒了。。。求前辈解答,十分感谢为何模运算无法输出

#include <stdio.h>

int main(void)
{
int num1, num2;
int sum, sub, mul, div, mod;

printf("Enter num1:");
scanf("%d",&num1);
printf("Enter num2:");
scanf("%d",&num2);

if(num2 == 0){
sum = num1 + num2;
sub = num1 - num2;
mul = num1 * num2;
printf("num1 + num2 =%d\n",sum);
printf("num1 - num2 =%d\n",sub);
printf("num1 * num2 =%d\n",mul);
}
else{
sum = num1 + num2;
sub = num1 - num2;
mul = num1 * num2;
div = num1 / num2;
mod = num1 % num2;
printf("num1+num2 = %d\n",sum);
printf("num1-num2 = %d\n",sub);
printf("num1*num2 = %d\n",mul);
printf("num1/num2 = %d\n",div);
printf("num1%num2 = %d\n",mod);
}
return 0;
}

显示时,其他几行正常,就模运算那行只显示一个:num1
另外有两个warning:
1、warning: format '%n' expects type 'int *', but argument 2 has type 'int'
2、warning: too few arguments for format
该怎么样消除呢? div c
[解决办法]

Parameters
enable
A non-zero value to enable %n support, 0 to disable %n support.

Remarks (这里解释了为什么要这样做)
printf函数在使用%n存在安全问题,所以VS08在默认的情况下禁止这样使用。因为 %n 可以停止打印,并将当前printf已打印的字符数写入一个int指针,这让printf正常情况下也能修改别的变量的值。当然这个是有安全隐患的,但错不在 %n 而是printf允许参数是字符串指针,%n只是更加方便了黑客向内存写shellcode而已。

所以 printf("num1%num2 = %d\n",mod);//%num2 有 %n


[解决办法]
//字体怎么设置不对
Parameters
enable
A non-zero value to enable %n support, 0 to disable %n support.

Remarks (这里解释了为什么要这样做)
printf函数在使用%n存在安全问题,所以VS08在默认的情况下禁止这样使用。
因为 %n 可以停止打印,并将当前printf已打印的字符数写入一个int指针,
这让printf正常情况下也能修改别的变量的值。当然这个是有安全隐患的,
但错不在 %n 而是printf允许参数是字符串指针,
%n只是更加方便了黑客向内存写shellcode而已。

所以 printf("num1%num2 = %d\n",mod);//%num2 有 %n


[解决办法]

//printf("num1%num2 = %d\n",mod);
//转义一下
printf("num1%%num2 = %d\n",mod);

读书人网 >C语言

热点推荐