问题标签 [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 投票
6 回答
49701 浏览

c - 在 C 中返回一个 char 指针

我正在开发一种用 C 编写的文件共享程序。有一个函数可以读取数据文件并将数据存储到字符串中,然后将此字符串返回给主函数,然后将主函数发送回客户端。代码如下所示

但是,这种方法不起作用。没有任何显示,当然也没有发送任何内容。但我确实在函数 ListFiles() 中得到了正确的显示。我不知道会发生什么。我也使用 strcpy() 但它仍然无法工作。

0 投票
11 回答
8945 浏览

c - C 字符串中的 '\0' 之后的内存会发生什么?

令人惊讶的简单/愚蠢/基本问题,但我不知道:假设我想向函数的用户返回一个 C 字符串,在函数的开头我不知道它的长度。最初只能对长度设置上限,根据加工,有尺寸缩小的情况。

问题是,分配足够的堆空间(上限)然后在处理期间终止字符串是否有任何问题?即如果我将'\0' 粘贴到分配的内存的中间,(a.)free()是否仍然正常工作,并且(b.)'\0' 之后的空间是否变得无关紧要?添加 '\0' 后,内存是否会被返回,还是会一直占用空间直到free()被调用?为了节省一些前期编程时间,在调用 malloc 之前计算必要的空间,将这个悬挂空间留在那里通常是不好的编程风格吗?

为了给出一些上下文,假设我想删除连续的重复项,如下所示:

输入“你好哦哦哦!!” --> 输出“Helo oOo!”

...下面的一些代码显示了我如何预先计算我的操作产生的大小,有效地执行两次处理以获得正确的堆大小。

0 投票
1 回答
1299 浏览

c - 为什么 strcpy 以相反的顺序接受它的参数

几乎所有其他旨在将一个对象复制到另一个对象的程序或函数都使用基本约定

复制(源,目标)

即使是常见的逻辑也会得出这样的结论,即您正在将某些东西从这里复制到那里。为什么 strcpy 使用完全相反的约定?它只会使试图使用该功能的人感到困惑。strcpy 的作者在编写函数时肯定想到了这一点吗?还是 strcpy 函数早于这个现在无处不在的使用约定?

0 投票
4 回答
1629 浏览

c++ - 在 C++ 中搜索和替换 C 风格的字符串

我正在尝试编写一个接受三个 c 样式字符串并返回一个 c 样式字符串的函数。此函数在 c 字符串中搜索所有出现的子字符串,并用不同的字符串替换它们。
这个程序有效,但看起来很不优雅。我情不自禁地感觉它本来可以用不那么笨重的方式完成。

有人对如何使这段代码更清晰和/或更高效有任何建议吗?欢迎任何意见。请不要建议改用类字符串。这不是一个选择。该函数必须与 c 字符串一起使用

0 投票
12 回答
58824 浏览

c++ - ATL CString 到字符数组的转换

我想将 aCString转换为char[]. 有人告诉我该怎么做?

我的代码是这样的:

0 投票
2 回答
2234 浏览

c++ - C++ 中的 StringStream/c_str() 损坏

我在使用 std::cout、std::stringstream 和 std::string.c_str() 时遇到了一些问题。主要是,似乎有些东西被困在某处的缓冲区中,我不知道如何解决这个问题。

如果你不喜欢阅读 StackOverflow 中的代码,这里是我的 github 的相关链接:TLString 类测试类单元测试——你可以跳到我陈述我更简洁的问题的最后。

在我的单元测试中,我有以下代码:

下面是 Test 类的代码:

TLString 类是我正在编写的类,它将为 C++ 中的字符串提供一些更流畅的操作(例如,连接)。它使用字符串流来处理这些操作。该TLStream::c_str()方法实际上只是这样做:return stream.str().c_str();

所以,我真的很困惑如何actual分配testName. 我不确定冲突发生在哪里,因为变量接近交互的唯一时间是它们都输出到 CLI,甚至在这种情况下,这两个是不同的数据类型。

我编写了 c_str() 功能,因为很简单,您永远不知道某些第三方库何时会依赖 C 字符串而不是 C++ 字符串,并且没有理由限制我的类。即使在 std::ios 中,您也需要为某些事情使用 c 字符串。

任何帮助将不胜感激。

谢谢!

0 投票
4 回答
728 浏览

c - 在 C 中分隔可以具有任意空格的字符串

我有一个字符串数组,我需要将每个字符串分成几个不同的部分。字符串可能有也可能没有任意空格和制表符。

所以我需要删除任何前导/尾随空格,以及字段之间的任何空格(线索字段除外。线索内的空格需要保留)。我真的不知道该怎么做。我有一些基本的想法,但我不知道如何去实现它们,或者它们是否可行(编码新手并且非常无能)。到目前为止,我尝试过的所有东西要么无法编译,要么不起作用。

我最近尝试拉出第一个字段:

对它不起作用并不感到惊讶。我还没有完全解决这个问题。请帮忙?

0 投票
2 回答
1808 浏览

c# - C#中的帕斯卡字符串

我正在研究 C# 中的音频库,并且正在研究 WAVE 文件格式 ATM。根据我正在使用的信息量很大的网站,WAVE 使用 Pascal 风格的字符串。我已经在谷歌上搜索了 20 多分钟,并且只提出了一个C 到 Pascal 转换器

我知道 Pascal 和 C 字符串如何比较(C 代码):

如果有帮助,我正在使用它System.IO.BinaryReader来解析文件。

0 投票
2 回答
2025 浏览

c - 从文件中读取多个字符串

无法弄清楚这一点,试图将两个名称 fscanf 成两个 char[]

这是它崩溃并给我“警告:警告:从不兼容的指针类型传递'fscanf'的参数1

编辑: MAX 定义为 20,而 malename1[MAX+1] malename2[MAX+1] (+1 表示 null)

编辑:我已经读到了一些工作,怎么能占一个空间来结束malename1的读入?我正在阅读 Chris 的 malename1 和 Ryan 的 malename2 但对于 malename1 它扫描 ChrisRyan

0 投票
4 回答
4428 浏览

c++ - 我很困惑!C++ 中的字符、字符* 或字符串

当我使用 char 或 char* 时,Visual Studio 2012(11) 只会输出最后一个字符,例如:

它只显示“x”。我使用的是正确的, string strName = "Alex" 但是在那些将参数作为字符的函数中,字符串不能作为参数传递。在这种情况下,VS 编译器说字符串不能转换为 int。还告诉我 char 和 char* 有什么区别。我是一名 PHP 开发人员,而 C++ 是如此令人困惑。请帮我。