You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C项目中scanf_s函数无法正常运行,参数传递报错求助

scanf_s使用异常的排查与解决

你的代码存在两个问题,导致无法正常运行:

1. printf语句语法错误

原代码中printf("Please typing text under 30 text!:";末尾缺少右括号,这会直接触发编译语法错误,必须补上)。

2. scanf_s参数缺失

scanf_s作为安全输入函数,读取字符串时要求额外传入缓冲区的字节大小参数,用来限制输入长度、避免缓冲区溢出。你只传递了数组words,没指定大小,这就是报错提示"not enough arguments passed for format string"的原因。

修正后的完整代码

#include <stdio.h>
int main() {
    char words[30];

    printf("Please type text under 30 characters!:");
    // 第二个参数是缓冲区,第三个参数是缓冲区的字节大小
    scanf_s("%s", words, sizeof(words));

    printf("text: %s \n", words);

    return 0;
}

补充说明

  • sizeof(words)会自动计算数组的总字节数(这里是30),作为scanf_s的第三个参数,确保输入的字符串不会超出数组容量。
  • 原提示文本里的"typing"改成"type"更符合语法,同时把"30 text"调整为"30 characters"表述更准确。

内容的提问来源于stack exchange,提问作者Yooni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 02:05:16