问题标签 [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.

0 投票
2 回答
459 浏览

c++ - C++ 字符数组分配错误

我有一个旨在获取文件内容的函数:

当我运行这个函数时,文件的长度总是被准确地检索到。但是,如果我用一个文件调用该函数一次,用一个不存在的文件再次调用它,然后用原始文件再调用一次,字符串'buffer'大于int'length'。

好吧,这可能不准确,而是 - 当字符串 'buffer' 被复制到字符串 'code' 时,'code' 比 'length' 长。在每个实例中,“代码”都在调用“getFileContents”之前立即实例化,因此这与先前值无关。

如果我检索文件的内容,随后从文件中添加或删除一些文本,然后再次检索相同文件的内容,这似乎也会发生。

我对字符串几乎没有经验,并且认为我没有正确使用它们,但是我使用的代码来自一个示例,我一生都找不到它有什么问题。

感谢您的帮助,怀亚特

0 投票
3 回答
1081 浏览

cocoa-touch - Xcode/Cocoa 中的复合/复合 C 字符串

我正在创建一个 SQLite3 程序。我正在代码中创建数据库。我有大约 15 列。下面的例子:

当我编译时,我得到“缺少终止字符错误。我做了一些研究,发现因为它是一个 C 字符串,它会将 CR\LF 作为连续字符处理。我不想创建一行代码每次我需要用 SQL 做某事时,滚动屏幕的最右边。有没有一种方法可以创建一个可以在单独的行上分解而不会出现此错误的字符串?

0 投票
1 回答
5955 浏览

ios - NSString cString 已弃用。什么是替代方案?

我还有一个新手问题。

我编写了一段代码,将 NSString 转换为 NSMutableData 以模拟 webService 结果。

然而事实证明,cString 已被弃用。可以帮我换吗?这是我的代码。

0 投票
3 回答
11225 浏览

c - C 中的 join() 或 implode()

我喜欢 Python 和 PHP 的一件事是能够轻松地从数组中创建字符串:

但是,我想知道是否有人有一种直观而清晰的方法可以在 C 中实现这一点。谢谢!

0 投票
4 回答
372 浏览

c - 在 C 中,传递给函数的 char* 如何填充文本?

我正在尝试创建一个返回 int 的 C 函数,但在此过程中将填充作为变量传入的 char*。我正在尝试的一个基本示例是:

在 main.c 中:

运行时,整数显示在屏幕上,但文本不显示。

outMaxLen 变量用于检查 char* 参数以确保它足够大以容纳输出字符串。

除了 strcat(),我还尝试了 strcpy() 和 strncpy(),但都无济于事。strcat() 不向控制台显示任何文本,并且 strcpy() 和 strncpy() 使用消息 EXC_BAD_ACCESS 调用调试器。

我已经通过使用 strcpy_s 函数在 Windows API 中成功地管理了这个,但我现在正在尝试使用 UNIX 机器。我可能错过了一些非常基本的东西!

0 投票
4 回答
37438 浏览

c - 在 C 中打印字符串的一部分

有没有办法只打印字符串的一部分?

例如,如果我有

有没有办法只打印"hello",请记住我要打印的子字符串是可变长度的,而不总是 5 个字符?

我知道我可以使用for循环,putchar或者我可以复制数组然后添加一个空终止符,但我想知道是否有更优雅的方法?

0 投票
4 回答
4447 浏览

c++ - MFC CString 格式给出了奇怪的行为

我有一个奇怪的问题,CString我有以下代码,它给出了意想不到的结果:

结果字符串显示Path = (null).

我不确定那里发生了什么,我尝试将其转换sourcePath为 anLPCTSTR并获得了一个有效的指针,当在 MSVC 的内存视图窗口中查看该内存地址的内容时,一切似乎都是有效的。

这让我很恼火,因为我在以前的项目中尝试过相同的方法,而且效果很好。

谢谢。

PS 请,在人们开始在这里评论之前询问什么是 a CString,就像我之前的一篇文章中发生的那样,请先在这里查看:MSDN CString

编辑:对斜线的事情感到抱歉..是的,原始代码确实有双斜线..

0 投票
1 回答
1672 浏览

winapi - 解释 App Verifier 输出:堆损坏或将堆栈地址误解为堆地址?

我们有一个测试用例,它使我们基于 MFC 的大型应用程序因堆损坏错误而崩溃。

我使用 App Verifier 为有问题的 DLL 打开了页面堆(不幸的是,由于其他原因,为整个进程打开堆是不可行的。)验证器没有给我们提供比我们已经拥有的更多的信息。它与原始崩溃在同一点触发。

现在我有两个相互竞争的理论。您认为哪种理论更有可能是正确的,您的下一步是什么?

  1. 这确实是堆损坏。验证程序没有捕捉到原始损坏,因为它发生在另一个 DLL 中。我们应该尝试为更多 DLL 激活验证程序,并确定哪些代码正在破坏堆。
  2. 堆很好;问题是我们将堆栈地址视为堆地址。我们应该进一步研究此调用堆栈中的代码以找出问题所在。

我倾向于#2,因为 free() 的参数看起来像一个堆栈地址,但到目前为止,没有人提出解释如何实现这一点。

这是调用堆栈的片段。MyString 是 CString 的简单包装器。MyAppDll 是设置为使用页堆的 DLL。

以下是 free() 堆栈帧内的寄存器:

这是应用验证程序消息:

0 投票
4 回答
323 浏览

c - 在 C 中,如何从另一个数组中删除一个数组中存在的所有字符?

在 C 中,如何从另一个数组中删除一个数组中存在的所有字符?

0 投票
1 回答
1946 浏览

c - 如何比较c中的字符

我正在做一个小项目,需要比较流的第一个字节。问题是该字节可以是 0xe5 或任何其他不可打印的字符,因此表示该特定数据是错误的(一次读取 32 位)。我可以允许的有效字符是 AZ、az、0-9、'.' 和空间。

当前代码是:

所以问题是当我尝试执行以下操作时:

它不起作用。我看到诸如表示黑色六面菱形的字符,里面有一个问号......理论上它应该只让以下字符:Space (32), 0-9 (48-57), A-Z (65-90), a-z (97-122),但我不知道为什么它不能正常工作。

我什至尝试使用 ctype.h -> iscntrl、isalnum、ispunct 中的函数,但这也没有用。

任何人都可以帮助我认为是一个简单的c问题的c新手吗?这将不胜感激!

谢谢。马丁