P1957口算练习题 (用sscanf以及sprintf)

P1957口算练习题 (用sscanf以及sprintf),第1张

P1957口算练习题 (用sscanf以及sprintf)
#include
#include
#include
using namespace std;
int main()
{
	int n;
	int i,j;
	char s[100],b;//s存放最终的字符串,方便用strlen计算长度
	//a存放临时字符串
	char a[10];
int c=0,d=0;
	cin>>n;         //输入次数 
	for(i=0;i>a;     //输入第一个字符,下面的if判断是字符还是数字
		           //如果是字符就要把字符存入另一个数组里,因为临时字符串随时都会更新数据
				   //字符存入另一个数组,方便后面判断进行什么样的计算 
		if(a[0]>='a'&&a[0]<='z')
		{
			b=a[0];
		//	cout<>c>>d;
		}
		else
		{
			sscanf(a,"%d",&c);  //如果输入的不是字母,就要通过sscanf函数转换为int型 
			cin>>d;
		}
		memset(s,0,sizeof(s));  //初始化数组 
		if(b=='a')
		{
			sprintf(s,"%d+%d=%d",c,d,c+d);  //需要注意的是sprintf函数不是一个输出的函数
			                            //它只是将数据转换形式存入一个字符串中 
		}else if(b=='b')
		{
			sprintf(s,"%d-%d=%d",c,d,c-d);
		}else if(b=='c')
		{
			sprintf(s,"%d*%d=%d",c,d,c*d);
		}
		cout< 

 知识点概要:

具体内容详见链接:(9条消息) C 字符串函数 sprintf()、snprintf() 详解_love、reading的博客-CSDN博客_sprintf取一个字符串几个字符d

 sprintf函数的打印位置不是命令框,而是函数里所指向的字符串中,例如上述代码里的

sprintf(s,"%d+%d=%d",c,d,c+d); 

它执行的 *** 作就是将int型变量c,d以及c+d等数字以char型写入字符串s,这里值得注意的是第一个参数只能是char型的数组,具体原因我还不明白,可能是因为这是c中的函数,所以用string型是不可以的。


 sscanf函数也可以和scanf对比着理解,例如scanf是直接从键盘读取数据,而sscanf是从字符串读取数据,它和sprintf的出发点是一样的。例如上述代码中的一句:

sscanf(a,"%d",&c); 

它执行的 *** 作是将char型字符串a中的a[0]以”%d“(int型)读入c中  (请结合源代码分析,a是定义的临时数组a[10],c是定义的需要处理的int型变量)

需要注意的是,这里的a也需要是char型数组。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5718880.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存