strtok函数取WinMain的参数

深入VC2010 CRT源码:内存管理与文件IO的实现原理与调试技巧 C运行时库(CRT)是Windows平台C/C++程序开发的基础支撑,它封装了内存管理、文件操作等核心功能。理解CRT的工作原理,需要从静态链接与动态链接的本质区别入手,这决定了程序的内存布局和模块间协作方式。在技术价值上,掌握CRT源码能帮助开发者诊断堆损坏、内存泄漏等底层问题,提升调试复杂运行时错误的能力。应用场景包括高性能优化、多线程同步机制设计以及跨模块兼容性处理。本文以VC2010的CRT源码为例,重点剖析了malloc和free的内存管理机制,以及fopen和FILE结构体的文件IO实现,通过搭 阅读详情

WinMain函数与main函数不同,main可以从argc得到函数个数,然后从argv[]数组里取参数。

而WinMain函数取参数是通过lpCmdLine,lpCmdLine里不能得到参数的个数。

下面使用strtok来将参数分开。

 int WINAPI WinMain(
       HINSTANCE hInstance,      // handle to current instance
       HINSTANCE hPrevInstance,  // handle to previous instance
       LPSTR lpCmdLine,          // command line
       int nCmdShow              // show state
       )
{
 char strCmdLine[MAX_PATH];
 strcpy(strCmdLine,lpCmdLine);
 
 //找到第一个参数,IP地址
 char *pstrParam;
 pstrParam = strtok(strCmdLine," ");
 if (pstrParam)
 {
  MessageBoxA(0,pstrParam,"IP",0);
  //找到第二个参数,端口
  pstrParam = strtok(NULL," ");
  if(pstrParam) MessageBoxA(0,pstrParam,"Port",0);
 } 
}

嵌入式开发中的Native C++与.NET Compact Framework选型对比 在资源受限的嵌入式系统中,Native C++与.NET Compact Framework代表两种根本不同的软件构建范式:前者提供对硬件的确定性控制和零抽象开销,后者则以托管运行时换取开发效率。其核心差异源于内存管理机制(手动分配 vs 垃圾回收)、执行模型(直接机器码 vs JIT编译)及系统调用开销(无中介 vs P/Invoke)。这类权衡至今深刻影响IoT边缘设备、车载HMI和工业PLC等硬实时场景的技术选型。尤其当RAM低于64MB、中断响应要求<100μs或需直接访问GPIO/ADC时,Nat 阅读详情

相关推荐

strtok的缺陷,使用strtok_s函数更新安全度

strtok的缺陷,使用strtok_s函数更新安全度 #include "stdafx.h" #include "Windows.h" #include #include using namespace std; char string1[] = "A string\tof ,,tokens\nand some more tokens"; char string2[] = "Another string\n\tparsed at the same time."; char separators[] = " ,\t\n"; char *token1, *token2, *next_token1, *next_token2; int main(void) { cout << "Tokens:" << endl; // establish a string and get the first token: token1 = strtok_s(string1, separators, &next;_token1); token2 = strtok_s(string2, separators, &next;_token2); // while there are tokens in "string1" or "string2" while ((token1 != NULL)) { // get the next token: if (token1 != NULL) { cout << token1 << endl; token1 = strtok_s(NULL, separators, &next;_token1); OutputDebugString(_T(token1)); } } while ((token2 != NULL)) { // get the next token: if (token2 != NULL) { cout << token2 << endl; token2 = strtok_s(NULL, separators, &next;_token2); OutputDebugString(_T(token2)); } } Sleep(3000); system("pause");

从Win32程序的主函数WinMain中获取命令行参数

这些参数帮助我们为程序传入命令行参数。"argc"为命令行参数的个数,"argv"则为传入参数的数组列表。但是当我们在Visual Studio中创建Win32 GUI程序的时候,WinMain变成程序的入口函数,而该函数并没有"argc" 和"argv"参数,那我们怎样给Windows程序传入命令行参数呢?Windows程序中又怎样取得这些传入的参数呢? lpCmdLine 参数 第

chenyujing1234的专栏 8179

Win10文件夹只读属性自动恢复?彻底解决方法解析

Win10文件夹只读属性自动恢复?彻底解决方法解析在Windows系统使用过程中,文件权限管理常会遇到棘手问题。最近多位用户反馈:取消文件夹只读属性后,系统却自动恢复该设置,导致无法正常复制或修改文件。本文将深入分析该现象的产生原因,并提供多种解决方案,帮助开发者彻底摆脱权限困扰。

mmoo_python的博客 7521

从Win32程序中的主函数中获取命令行参数

【翻译文章,原文来自:http://codingmisadventures.wordpress.com/2009/03/10/retrieving-command-line-parameters-from-winmain-in-win32/】 在标准C或者Win32控制台程序的main函数中,它们都有两个参数:"argc" 和 "argv",如下所示: int main(int argc, char * argv[]) ... 这些参数帮助我们为程序传入命令行参数。"argc"为命令行参数的个数,"a

BlueSky 1529

iverilog+GTKwave使用总结

iverilog是一个开源的硬件描述语言(HDL)仿真工具,用于对硬件描述语言(如Verilog)编写的数字电路进行仿真。它可以将Verilog代码编译为仿真模型,并通过仿真运行来验证设计的正确性。iverilog支持IEEE 1364-2005 Verilog语言标准,并提供了丰富的功能,包括对多种Verilog语言特性的支持、模块化设计、测试平台等。它还可以与其他工具(如GTKWave波形查看器)配合使用,以便进行仿真后的波形查看和分析。

争取早日成为硅农 2万+

VS2022下C# WPF项目一键打包成独立exe的完整指南

本文提供了一份在Visual Studio 2022中将C# WPF项目一键打包成独立可执行exe文件的完整指南。通过配置项目属性、启用单文件发布和自包含模式,开发者无需依赖第三方工具,即可生成可在未安装.NET运行时的电脑上直接运行的独立程序,极大简化了桌面应用的分发流程。

weixin_28831399的博客 670

关于winmain的几个参数

悉C编程的人都知道main函数带有2个参数:arc和argv,完整的main函数定义是:int main(int argc, char *argv[])。argc指示程序启动时命令行参数的个数,argv则包含具体的参数字符串。如果有程序叫“hello.exe”,直接启动时,argc=1, argv[0]=hello.exe。如果以“hello.exe readme.txt”的形式启动,ar

zhouqian88423的专栏 962

3分钟搞懂欧式距离变换(EDT):从暴力算法到Felzenszwalb的演进史

本文系统梳理了欧式距离变换(EDT)从暴力算法到高效线性算法的演进历程。重点解析了光栅扫描算法和Felzenszwalb算法的核心思想与实现,并探讨了其在机器人路径规划中生成欧几里得符号距离场(ESDF)的关键应用,为开发者提供了清晰的算法选型与实战指南。

fern8的博客 976

c strtok()

分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。原型 char *strtok(char s[], const char *delim);说明 strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串中包含的

long_long的专栏 971

解决创建conda环境时Solving environment: failed 和 ResolvePackageNotFound 的错误

环境配置文件是在别的机器上导出的,文件里的软件包是按照导出文件的机器配置的,因此导出的时候,把这些包的详细信息也导了出来,即第二个等号后面跟着的信息,当我们按照这个文件创建环境时,conda就会根据我们机器的配置信息,按照配置文件里包的详细信息,去找这个包,那当然找不到,结果发现“查无此包”,因此也就会报上面的错误。上面找到了问题的所在之处,解决起来就很简单了,只需要在配置文件 environment.yml 中将包的详细信息删除,也就是第二个等号后面的内容。然而升级超级慢不说,也没有解决我的问题。...

番茄炒蛋三分糖 4万+

TPM 2.0实例探索2 —— LUKS磁盘加密(1)

本文对LUKS行了系统介绍

phmatthaus的专栏 1700

window下C语言中strtok函数的使用

基础知识 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串。 参数说明:str为要分解的字符串,delim为分隔符字符串。其中 str 不能用指针来存储,因为这个方法的本质是找到分隔符,并用'\0'代替,即字符串的结束符。 原理:找到分隔符,并用'\0'代替,即字符串的结束符。 返回值:从str开头开始的一个个被分割的串的首地址。当没有被分割的串时则返回NULL。 代码示例 int main() { cha.

我想月薪过万的博客 663

在 SAP HANA 里为视图创建 Analytic Privilege,真正把同一份数据按角色切开

摘要:本文介绍了SAP HANA中基于业务角色的动态数据权限控制方法。通过Analytic Privilege技术,可以在同一视图上为不同角色设置不同的数据访问范围,实现行级安全控制。核心机制包括:1) 创建带有STRUCTURED PRIVILEGE CHECK的视图;2) 建立授权对象和用户映射表;3) 开发条件提供过程动态生成过滤条件;4) 创建结构化权限对象绑定条件提供器。这种设计使权限规则与业务数据解耦,便于维护变更,适合销售区域、财务数据等多角色访问控制场景。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2392

main与WinMain命令行参数提取

<br />  int main(int argc, char *argv[])<br />  argc是外部命令参数的个数,argv[]存放各参数的内容。argc >= 1,argv[0]存放程序文件本身。<br />  int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int nShowCmd)<br />  szCmdLine = "123.txt 65";<br />  char szCo

tg5156的专栏 3389

【STM32实物】基于STM32的扫地机器人/小车控制系统设计

扫地机器人系统采用分层结构设计,主要包括底层硬件控制层、中间数据处理层和上层用户交互层。底层硬件控制层负责对各个硬件模块进行控制和数据采集,中间数据处理层负责对采集到的数据进行处理和解算,上层用户交互层负责与用户进行交互并显示系统状态信息。

嵌入式阿齐Archie 1万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

逆向工程实战:从CrackMe Andrnalin.3入门算法分析与注册机编写

软件逆向工程是分析程序内部逻辑、理解其工作原理的核心技术,广泛应用于安全研究、漏洞挖掘和软件调试等领域。其基本原理是通过静态分析与动态调试相结合,解析程序的执行流程与数据流。这项技术的核心价值在于能够深入理解闭源软件的运行机制,从而进行安全评估、算法还原或功能定制。在CTF竞赛、软件保护分析和恶意代码研究等场景中,逆向工程都是必备技能。本文以经典逆向题目CrackMe Andrnalin.3为例,详细演示了如何运用IDA Pro、x64dbg等工具进行**静态分析**与**动态调试**,逐步揭示其序列号验证

weixin_33829657的博客 396

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

strtok()函数详解!

strtok()函数详解! 1.定义 分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。在头文件#include&lt;string.h&gt;中。 2.原型 char *strtok(char s[], const char *delim); 3.说明 (1)当...

魏波 20万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WinMain说明

WinMain函数的原型声明如下: int WINAPI WinMain(      HINSTANCE hInstance,          // handle to current instance

learning attitude 1127

C函数strtok使用详解

strtok和strtok_r都要求传入的参数非常量字符串,不过strtok_r是可重入版本,线程安全版本。

flysnow010的博客 975

C函数之strtok使用及Win & BSD实现

这几天在学习TCP/IP Sockets in C(2nd) Practical Guide for Programmers,在学到如何确认Client和Server之间的数据传输时是一段数据的begin和end时,作者讲了两种方法: 第一种:每次传固定长度的数据,当然多长你要在Client和Server之间协调好。 第二种:规定begin和end的token-标记,(当然你传的数据要是出现你

fovwin的专栏 1454

strtok、strtok_s、strtok_r 字符串分割函数

strtok strtok函数

hustfoxy的专栏 10万+

关于函数strtok和strtok_r的使用要点和实现原理(一)

strtok函数的使用是一个老生常谈的问题了。该函数的作用很大,争议也很大。以下的表述可能与一些资料有区别或者说与你原来的认识有差异,因此,我尽量以实验为证。交代一下实验环境是必要的,winxp+vc6.0,一个极端平民化的实验环境。本文中使用的源代码大部分来自于网络,我稍加修改作为例证。当然,本人水平有限,有不妥之处在所难免,各位见谅的同时不妨多做实验,以实验为证。 strtok的函数原型为char *strtok(char *s, char *delim),功能为“Parse S into toke

liuintermilan的专栏 3万+

strtok

头文件: 声明: char *strtok(char *str, const char *delimiters); 功能: 对该函数的连续调用,将会使一个完整字符串str以delimiters为分割符进行分割,最终得到一小片一小片各自独立的字符串。 如何使用: 在第一次调用时,该函数需要一个字符串参数str,它的第1个字符用来做扫描的起始位置。在随后

x-2010的笔记 3417
上一篇: 关于KernelFaultCheck启动项
下一篇: 框架挂马
sysprogram
博客等级 码龄17年 298粉丝 442原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值