文件名截断为仅显示第一个字符

2023-12-04

我正在跟进本指南来自 MSDN 关于如何列出目录中的文件(我正在使用当前目录)。就我而言,我需要将信息放入数据包的消息部分(大小为 1016 的字符数组)中,以将其发送到客户端。当我在客户端和服务器上打印 packet.message 时,仅显示文件名的第一个字符。怎么了?这是相关代码部分的片段:

WIN32_FIND_DATA f;
HANDLE h = FindFirstFile(TEXT("./*.*"), &f);
string file;
int size_needed;
do
{
    sprintf(packet.message,"%s", &f.cFileName);
    //Send packet
} while(FindNextFile(h, &f));

这通常是由于宽字符串被错误地视为 ASCII 字符串造成的。该构建针对 UNICODE 和cFileName包含一个宽字符串,但是sprintf()假设它是一个 ASCII 字符串。

FindFirstFile()将被映射到FindFirstFileA() or FindFirstFileW()取决于构建是否针对 UNICODE。

一个解决方案是使用FindFirstFileA()和明确的 ASCII 字符串。

请注意,&中不需要sprintf():

sprintf(packet.message, "%s", f.cFileName);

由于应用程序正在使用超出其控制范围的字符串(即文件名),我建议使用更安全的_snprintf()避免缓冲区溢出:

/* From your comment on the question 'packet.message' is a 'char[1016]'
   so 'sizeof()' will function correctly. */
if (_snprintf(packet.message, sizeof(packet.message), "%s", f.cFileName) > 0)
{
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文件名截断为仅显示第一个字符 的相关文章

  • 为什么这个 Web api 控制器不并发?

    我有一个 Web API 控制器 里面有以下方法 public string Tester Thread Sleep 2000 return OK 当我调用它 10 次 使用 Fiddler 时 我预计所有 10 次调用都会在大约 2 秒后
  • 使用 CMake 时如何导出 Emscripten 中的 C 函数

    In 本教程 https emscripten org docs porting connecting cpp and javascript Interacting with code html interacting with code
  • 在 CPP 类中将 C 函数声明为友元

    我需要在 C 函数中使用类的私有变量 我正在做这样的事情 class Helper private std string name public std getName return name friend extern C void in
  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • 无法注册时间触发的后台任务

    对于 Windows 8 应用程序 在 C Xaml 中 我尝试注册后台任务 很难说 但我想我的后台任务已正确注册 但是当我单击调试位置工具栏上的后台任务名称时 我的应用程序停止工作 没有任何消息 我查看了事件查看器上的日志 得到 具有入口
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • 即使没有异步,CallContext.LogicalGetData 也会恢复。为什么?

    我注意到CallContext LogicalSetData LogicalGetData不按照我期望的方式工作 内部设置的值async方法得到恢复即使没有异步或任何类型的线程切换 无论如何 这是一个简单的例子 using System u
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • Eigen 和 OpenMP:由于错误共享和线程开销而没有并行化

    系统规格 Intel Xeon E7 v3 处理器 4 插槽 16 核 插槽 2 线程 核心 Eigen 系列和 C 的使用 以下是代码片段的串行实现 Eigen VectorXd get Row const int j const int
  • 是否使用 C# 数据集? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对 C 中的数据集概念有点困惑 编码 ASP NET 站点 但这并不重要 在我的阅读中 我了解到它们 本质上 用作我的应用程序和我的
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • 在 C 中使用枚举而不是 #defines 作为编译时常量是否合理?

    在 C 工作了一段时间后 我将回到 C 开发领域 我已经意识到 在不必要的时候应该避免使用宏 以便让编译器在编译时为您做更多的工作 因此 对于常量值 在 C 中我将使用静态 const 变量或 C 11 枚举类来实现良好的作用域 在 C 中
  • 将函数参数类型提取为参数包

    这是一个后续问题 解包 元组以调用匹配的函数指针 https stackoverflow com questions 7858817 unpacking a tuple to call a matching function pointer
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • 如何在 sql azure 上运行 aspnet_regsql? [复制]

    这个问题在这里已经有答案了 可能的重复 将 ASP NET 成员资格数据库迁移到 SQL Azure https stackoverflow com questions 10140774 migrating asp net membersh
  • 当用户更改 Windows 中的语言键盘布局时如何通知?

    I want to show a message to user when the user changes the language keyboard layout of Windows for example from EN to FR

随机推荐

  • SQL 数据库项目:根据构建配置构建不同的脚本

    我想解决的问题是根据构建配置构建不同的脚本 假设我们有两个 SQL Server 实例 连接链接服务器的企业版 用于离线开发和单元测试的 LocalDb 版本 当 LocalDB 用本地表替换这些视图时 企业版具有链接服务器的视图 这些链接
  • Three.js:纹理全黑

    我有一个简单的盒子几何形状 我试图用纹理来装饰它 然而 我的盒子根本不显示 或者可能是 100 黑色 当前的这个问题是从这个问题 我已经更新了代码以反映给出的答案gaitat关于原来的问题 我写过另一个简单的测试站点来演示这个新问题 这是该
  • 将“Kendo.Mvc.UI.DataSourceRequest”类型的对象从 jquery 传递到 Mvc Action

    客观的 我想传递一个类型的对象Kendo Mvc UI DataSourceRequest到 Mvc 操作 以便我可以根据应用的排序和过滤从数据库获取结果 问题 障碍 当对象到达操作时 它会变为 null 我的控制器操作 public Ac
  • 如何上传多个文件到BlobStore?

    我正在尝试将表单中的多个文件上传到 BlobStore Form
  • 为 IE 包含 es6-promise 的优雅方式

    Since Promise is 不支持在所有 IE 版本中 我想让 IE 用户下载 HTML 格式的 pollyfill 然而 不支持条件注释在 IE 10 和 11 中 所以上面的代码在 IE 10 和 11 中不起作用 然后 微软提供
  • 如果颁发新的刷新令牌,旧的刷新令牌仍然有效吗?

    我的应用程序使用 Google 刷新令牌 从 Google 获取 access token 我在这里有两个问题 我知道 Google 刷新令牌 6 个月内不会过期 请参阅此处的文档 说我有一个刷新令牌refresh token old1 月
  • 使用后台线程不断从串行端口读取数据

    由于串行端口通信是异步的 我在涉及与 RS 232 设备通信的项目的早期就发现 我必须有一个后台线程不断读取端口接收的数据 现在 我使用 IronPython NET 4 0 因此我可以访问 NET 中内置的灵活 SerialPort 类
  • 在我的例子中,Mockito 验证函数被调用一次

    我在用Mockito编写我的测试用例 我有一个简单的类 其中包含一个函数countPerson boolean 我有兴趣测试 public class School School is a singleton class public vo
  • 使用 Inno Setup 在安装过程中删除和取消注册 DLL 文件

    In my Files 第 I 节有以下内容 Database password decryption for PTS importing Source PTSTools PTSTools bin x86 Release PTSTools
  • 嵌套查询执行的次数

    这个嵌套子查询会执行多少次 SELECT CID CNAME FROM CUSTOMER WHERE EXISTS SELECT CID FROM RENTALS WHERE CUSTOMER CID RENTALS CID AND PIC
  • 当我输入空格时,批处理 cmd 退出

    我正在为用户界面编写一个批处理脚本 您可以在其中输入数字 1 10 它非常像这个示例 echo OFF ask cls echo press 1 for test1 echo press 2 for test2 set p input if
  • 如何将 Storyboard ViewController 添加到 SwiftUI 项目中?

    我正在开发我的 SwiftUI 项目 每个视图现在都在 SwiftUI 中 但是由于 SwiftUI 的一些限制 我必须将 Storyboard 的 ViewController 添加到我的 SwiftUI 项目中 我正在尝试这个方法 st
  • 停止 html5 音频

    我如何编写一个函数来停止 DOM 中播放 html5 音频的所有实例 html5 音频
  • 从闭源第三方 Win32 应用程序中的窗口捕获数据

    我计划创建一个 C Windows 窗体应用程序作为第三方 Win32 应用程序的扩展 但我现在对如何执行此操作感到困惑 我最了解的是它涉及 Win32 Hooking 并且有一个名为 EasyHook 的开源项目应该允许我做到这一点 我想
  • WKWebView没有在navigationResponse中提供所有cookie

    我正在尝试用 WkWebView 替换我正在工作的 UIWebView 项目 我看过很多帖子 但我没有得到任何好的解决方案来从 WKWebView 获取所有 cookie 我也尝试过这个evaluateJavaScript document
  • Cypress 之前从 json-fixture 加载数据

    我试图通过 Cypress 中的固定装置从 json 文件中检索一些数据 但数据根本无法识别 before gt cy fixture example then function data console log this data use
  • TFS 2010 命令行 - TFSConfig 设置/安装

    背景 这是 Team Foundation Server 命令行实用程序中一个鲜为人知的命令 本质上 它允许您通过传入配置文件在计算机上安装团队构建服务 以及控制器和代理 语法是 tfsconfig setup install unatte
  • Chrome 应用程序无需创建窗口即可导航 html

    我正在创建一个 Chrome 打包应用程序 我需要在不创建大量窗口的情况下导航我的 html 例如 如果用户单击一个按钮 它会在用户所在的同一窗口中打开 html 有可能吗 如果没有的话 有没有办法让windows模式化 那么用户不能在不关
  • 如何让Python脚本作为服务运行?

    我想在 CENTOS 服务器中运行 python 脚本 usr bin env python import socket try import thread except ImportError import thread as threa
  • 文件名截断为仅显示第一个字符

    我正在跟进本指南来自 MSDN 关于如何列出目录中的文件 我正在使用当前目录 就我而言 我需要将信息放入数据包的消息部分 大小为 1016 的字符数组 中 以将其发送到客户端 当我在客户端和服务器上打印 packet message 时 仅