问题标签 [char-pointer]

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 投票
1 回答
587 浏览

c++ - 使用 sprintf 分配给以 char 指针作为输入之一的 char 数组时缓冲区溢出

我使用 sprintf 创建一个 char 数组,以后可以将其写出作为对系统的调用。

现在理论上这个缓冲区应该有足够的空间分配给这个字符串。但不知何故,由于 char 指针,我仍然得到* stack smashing detected *一个错误。

sprintf 不能将 char 指针作为输入处理,可能是因为它本身有很大的分配?

编辑:

事实证明,缓冲区毕竟很小,至少对于某些参数而言。

0 投票
7 回答
6593 浏览

c++ - 字符 *str; str="你好"; 在不为字符串分配任何内存的情况下如何工作?

代码:

我得到这个输出:

我有以下两个疑问:

  1. 如何在不为其分配任何内存的情况下存储字符串。str是一个字符指针,指向 char 变量所在的位置i。当我添加时,我str = "Hello";不是使用未分配的5那个位置的字节吗?4

  2. 因为,当我打印它们时,我的代码str = &i;不应该str并且具有相同的价值?&i当我删除str = "Hello";声明str并且相&i同时。如果str&i相同,那么我相信当我说它str = "Hello"应该覆盖'a''H',其余部分'ello\0'进入后续字节。

    我相信整个问题在于str = "Hello"陈述。它似乎不像我想的那样工作。

请有人解释它是如何工作的?

0 投票
1 回答
186 浏览

c - C: char 指针数组未按预期动态工作

我的代码中有以下片段,我试图使用动态分配的char *数组来保存来自标准输入的字符串。

我正在使用一个临时静态数组首先存储来自 的字符串stdin,然后根据一定的条件将其复制到 的数组中char *。我char *在运行时为个人分配内存。

sono_of_ref保存最终收到的字符串总数。例如 20。但是当我打印整个reference数组以查看每个字符串时,我得到了最后一个相同的字符串,打印了 20 次。

0 投票
2 回答
2102 浏览

c++ - 使用 ofstream 崩溃 C++ 写入数据

我正在使用的 IDE(visual studio 2012)没有显示任何错误或警告,但我基本上是在尝试将二进制数据写入一个名为 wizdata.bin 的文件,并且我已经声明了我的 Wizard 类的一些对象。Wizard 类的函数很少,有 4 个成员变量(1 个字符串和 3 个整数)。当我在 Wizard 类中调用名为“save”的函数时,控制台程序停止工作,但它确实设法编写了 Wizard 类成员变量名称,它是一个字符串。之后,它无法写入类中的任何整数。所以问题是我在尝试将整数写入二进制文件时做错了什么?Wizard.cpp 中推荐的部分导致崩溃。

这是我的代码文件:

向导.h:

向导.cpp:

和 Main.cpp:

这是加载数据的第二个控制台应用程序的“Main.cpp”:

加载数据后,这些是值: 名称:甘道夫 HP:25 MP:100 护甲:10

名称:Loki2 生命值:38400 MP:3072 护甲:1734429952

名称:ius HP:75 MP:6 护甲:0

0 投票
3 回答
52 浏览

c - c函数不工作

因此,当我使用以下代码对其进行测试时,我在 segfaulting 中实现了以下 c 函数:

这个方法应该返回一个 char 指针 = "$s2, 0($s3):

0 投票
1 回答
1477 浏览

c - 如何用从scanf中获取的参数填充字符指针数组?

我正在尝试用 C 编写一个非常基本的 shell 程序。我面临的问题是尝试用从输入中获取的单词填充我的 argv 字符指针数组。当我尝试使用下面的 parse() 函数填充 argv 数组的内容后尝试打印它时,出现分段错误。我知道这意味着我可能正在尝试访问超出范围的 argv 数组的一部分。但是,即使只提供一个参数来填充数组,我仍然会遇到段错误。用于打印 argc 的 printf 调用根据输入返回正确的 argc 值,但带有 *argv[0] 的第二个 printf 调用是导致段错误的调用。我想知道我的错误是否在于我尝试打印 argv 内容的方式,或者该错误是否是因为我试图错误地填充 argv。

编辑:我应该补充一点,getword() 函数接受一行文本并返回由空格分隔的第一个单词,以及许多其他分隔符。如有必要,我可以发布所有将单词分开的分隔符,但我认为问题不是因为 getword()。

编辑 2:在头文件中添加并在 main.xml 中包含 #include 语句。

编辑 3:在 main() 下添加了 getword 函数,在 p2.h 下添加了 getword.h

这是 p2.h,main 中包含的头文件:

getword.h:

这是主要功能:

getword.c:

0 投票
3 回答
5479 浏览

c++ - 重载运算符 [] 用于 Char 赋值 - C++

尽管我确实有一些编程经验,但我对 C++ 还是很陌生。我已经构建了一个使用动态 char* 作为主要成员的Text类。类定义如下。

我遇到的问题是我不知道如何在传入的operator[]给定索引处分配char 值。当前的重载运算符 operator[]用于在提供的索引处返回char。有人有这方面的经验吗?

我希望能够做类似的事情:

任何帮助和/或建议表示赞赏!

提供的解决方案- 非常感谢所有回复

char& operator[](size_t&);作品

0 投票
1 回答
11009 浏览

java - JNI。如何从 jobject 获取 jstring 并将其转换为 char*

到目前为止,这是我所拥有的:我传递了一个具有 2 个字段的对象:字符串和整数,作为参数,我想发送信息以在 C 部分处理它,这在这一点上并不重要......我得到了抱怨在 jstring 声明处

我错过了什么?

0 投票
2 回答
778 浏览

c++ - 将指针传递给函数然后在指针上调用 free() 时“检测到堆损坏”

视觉工作室 2010

当我为 char 字符串分配内存,将字符串(指针)传递给函数,然后尝试释放内存时,我收到“检测到堆损坏”运行时错误。

怀疑这是函数在返回后将内存标记为“已释放”的结果,但我仍然对如何解决这个问题感到困惑。简单地删除对 free() 的调用,我感到不舒服。

0 投票
1 回答
155 浏览

c - 由于 printf 不起作用,如何查看 char * 的内容?

这是我的代码片段:

所以主函数接受参数很好(测试)并通过它很好(测试)但是 hash() 函数虽然计算了哈希值,但没有返回正确的值,或者我无法在 main 中打印结果。从昨天开始,我一直在尝试检查错误,但我不是很聪明,所以任何帮助将不胜感激!