问题标签 [c-strings]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 从 char 数组转换/提取整数
我得到了一个来自 gzread 的调用的 cstring。我知道数据是块,每个块由一个无符号整数、字符、整数和无符号短整数组成。
所以我想知道将这个 cstring 拆分为适当变量的标准方法是什么。
说前 4 个字节,是 unsigned int,下一个字节是 char,接下来 4 个字节是有符号 int,最后 2 个字节是 unsigned short int。
我想我可以用适当的偏移量来记忆。
还是使用一些位运算符更好?比如移位和掩蔽。
或者将所有 11 个字节直接 gzreading 到某个结构中会更好,或者这甚至可能吗?结构的内存布局是否已修复,这是否适用于 gzread?
c - 为什么 puts 函数不适用于 C++ 中来自套接字的输入字符?
这是我运行登录管理器的服务器的代码,它登录到恶意访问的文件并打印出错误登录的结果。chars user 和 pass 来自使用套接字的用户输入。
好吧,问题在于输出控制台和日志文件中的输出。
像这样:
为什么会有奇怪的 asci 字符?如何避免新行,因为它们来自套接字的用户输入?
c - 是否可以只打印 C 字符串的某个部分而不制作单独的子字符串?
说我有以下内容:
是否可以仅打印此字符串的最后 5 个字节?仅前 5 个字节呢?是否有一些变化可以printf
做到这一点?
c - 有趣的 strcmp 实现失败。(C)
我正在做一个小项目,我无法访问任何 C 标准库。(从头开始在 ARM 结构中构建微内核。甚至 printf 也必须实现)
在这种情况下,我使用 Duff 的机器方法实现了 strcmp。
以下是整个代码。
这是有道理的;有一段时间它似乎在测试用例上工作,直到最终系统发生故障。我追查到了这个strcmp。
起初我认为它首先增加了 str1 然后在 str2 增加之前与 str2 进行比较。1. 事实证明不是,但任何人都可以验证它在某些情况下会发生吗?
然后我发现问题出在 *str1 - *str2 中,因此将其更改为返回 1。即,生成的代码如下:
虽然我想要的只是一个“等于”检查,所以改成“1”没有问题,但我仍然想知道为什么原始代码会失败。2. 有人可以就它是如何失败的给出一个提示或建议吗?我宁愿希望 strcmp 遵循标准 C 接口,它返回一个非零值,该值告诉更多关于 str1 和 str2 的信息。
测试用例是:
当 *program 为“k3”时,它返回“k1”,而“test_libc”返回“perf”。
原来的问题是通过给它“return 1”来解决的,所以这个问题纯粹是为了C的利益。也欢迎提出建议或链接到 strcmp 文档。我看过 IEEE 的规范接口
c - snprintf,用于 C 中的整数到字符串的转换
我有一小段代码可以将整数转换为 c 中的字符串。该代码必须同时在 32 位和 64 位平台上工作。
我在循环中解析参数,所以我需要 malloc 来创建缓冲区
我的问题是:有什么方法可以让使用 snprintf 变得更好,或者我应该回退到 sprintf。
我认为使用 snprintf 不是正确的做法,因为最初我想防止缓冲区溢出,但由于整数的大小是已知的,我认为它是无用的。我仍然想知道这里的最佳做法是什么。
c++ - 为什么在将字符串文字转换为 char* 时会收到编译器警告,这很糟糕吗?
所以编译器告诉我这是从字符串文字到 char* 的弃用转换:
我应该担心这个吗?这是错误的方法吗?
我需要传递myString
给一个接受 a 的函数,如果没有此转换char*
,我应该正确初始化谁?char*
c++ - 基本的 c 风格字符串内存分配
我正在使用主要使用 C++ 但使用 c 样式字符串的现有代码开发一个项目。采取以下措施:
这编译并运行良好,输出为长字符串。
但是我不明白它为什么起作用。我的理解是
是一个指向足够大的内存区域的指针,以容纳字符串文字“这是一个测试”。如果是这种情况,那么我如何能够在同一位置存储更长的字符串?我预计它会在这样做时崩溃,因为试图将一根长字符串塞进一个留给较短字符串的空间中。
显然对这里发生的事情有一个基本的误解,所以我很感激任何帮助理解这一点。
find - 错误:在非类类型“char [2000]”的“(cstring name)”中请求成员“find”
对不起,如果这含糊不清我对编程还是很陌生(对论坛也是新手>_>)
好的,我的代码应该从文件中读取一个数字,然后使用该数字读取该数量的单词作为字典单词。然后我将这些单词存储到一个数组中并保留它们以供以后使用。在文件中的字典单词出现某个段落之后,我将其读入并将其设置为 c 字符串数组。(到目前为止,我已经全部记下来了)但是对于程序的最后一部分,我需要返回该段落 c -string 并计算每个字典单词出现的次数。我目前正在尝试 para.find (word[0]) 但我遇到了一些我不知道如何修复的错误。
错误:|40|错误:在'paragraph'中请求成员'find',它是非类类型'char [2000]'|
代码:
infile2.txt 看起来像这样:
3牛排|鸡蛋|和|
牛排和鸡蛋,鸡蛋和牛排,鸡蛋和牛排,牛排和鸡蛋……
可口的。
c - 使用 scanf 获取字符串以创建并针对 while 循环验证它...继续获取
我正在创建一个 char* ,它本质上将被视为一个字符串。该字符串应该被一遍又一遍地使用。每次我试图检查while循环,看看它是否正确的“退出”......
*我不断收到分段错误...我做错了什么-非常愚蠢的错误-可能吗?
c++ - 使用指向 char 的指针时访问冲突写入位置
我正在编写一个非常简单的程序,可以从字符串中删除重复的字符。我运行了它的视觉工作室并得到了错误:
inteviews.exe 中 0x00d110d9 处未处理的异常:0xC0000005:访问冲突写入位置 0x00d27830。
我真的不明白问题是什么。当前单元格获取下一个单元格的值。
编辑:
我已经尝试将其更改为,char str[] = "abcad"
但仍然出现相同的错误。