2301_81175034 2024-04-04 09:35 采纳率: 41.7%
浏览 11
已结题

scanf函数返回值警告

ignoring return value of 'scanf 'declared with attribute 出现的原因和解决办法

  • 写回答

5条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-04-04 12:06
    关注

    【相关推荐】



    • 你看下这篇博客吧, 应该有用👉 :scanf()函数的bug问题
    • 除此之外, 这篇博客: scanf函数的读取中的 2.scanf的返回值 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
      #include "stdafx.h"
      #include <stdio.h>
      
      int main(int argc, char* argv[])
      {
      	int nNum = 0;
      	char chA = '0';
      
      	int nResult = scanf("%d%c",&nNum,&chA);//输入AB
      
      	printf("nNum = %d\n",nNum);
      	printf("nResult = %d\n",nResult);
      	printf("chA = %c\n",chA);
      
      
      	scanf("%c",&chA);
      	printf("Again chA = %c\n",chA);
      
      	return 0;
      }
      

      在这里插入图片描述

      我们可以看到当第一个参数读取失败的时候,后面的所有都不会被读取,
      当再次尝试为chA赋值的时候 缓冲区还是从指向A,从他开始读取。
      而且返回值是0,表示读取成功了0个参数。

      2.1

      int main(int argc, char* argv[])
      {
      	int nNum = 0;
      	char chA = '0';
      
      	int nResult = scanf("%c%d",&chA,&nNum);//输入AB
      
      	printf("nNum = %d\n",nNum);
      	printf("nResult = %d\n",nResult);
      	printf("chA = %c\n",chA);
      
      	scanf("%c",&chA);
      	printf("Again chA = %c\n",chA);
      
      	return 0;
      }
      

      在这里插入图片描述
      我们可以看到参数的返回值是1,表示读取成功了一个参数,就是chA = ‘A’;
      然后scanf尝试为参数nNum读取时,发现不匹配,将字符B放回缓冲区,并结束该次的scanf,当再次从缓冲区为chA读取数据时,读取的便是字符B了


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 5月1日
  • 已采纳回答 4月23日
  • 创建了问题 4月4日

悬赏问题

  • ¥50 如何进行点云姿态调整优化
  • ¥20 关于c++的问题 如何用qt完成
  • ¥15 台达变频器MS300与伺服驱动器B3系列的抱闸与电路设计如何实现
  • ¥20 C++通过HICON获取argb像素数组
  • ¥15 如何利用支持向量机提高分类器正确率和筛选理想分类器
  • ¥15 Pygame坦克大战游戏开发实验报告
  • ¥15 用vmmare虚拟机用sentaurus仿真的时候,调用terminal程序,输入swb指令弹出这个,打不开workbench,桌面上面的sentaurus workbench也打不开
  • ¥75 使用winspool.drv的SetPrinter设置打印机失败
  • ¥15 simulink 硬件在环路仿真
  • ¥15 python动态规划:N根火柴摆出的最大数字