问题标签 [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.
c++ - 使用 sprintf 分配给以 char 指针作为输入之一的 char 数组时缓冲区溢出
我使用 sprintf 创建一个 char 数组,以后可以将其写出作为对系统的调用。
现在理论上这个缓冲区应该有足够的空间分配给这个字符串。但不知何故,由于 char 指针,我仍然得到* stack smashing detected *
一个错误。
sprintf 不能将 char 指针作为输入处理,可能是因为它本身有很大的分配?
编辑:
事实证明,缓冲区毕竟很小,至少对于某些参数而言。
c++ - 字符 *str; str="你好"; 在不为字符串分配任何内存的情况下如何工作?
代码:
我得到这个输出:
我有以下两个疑问:
如何在不为其分配任何内存的情况下存储字符串。
str
是一个字符指针,指向 char 变量所在的位置i
。当我添加时,我str = "Hello";
不是使用未分配的5
那个位置的字节吗?4
因为,当我打印它们时,我的代码
str = &i;
不应该str
并且具有相同的价值?&i
当我删除str = "Hello";
声明str
并且相&i
同时。如果str
和&i
相同,那么我相信当我说它str = "Hello"
应该覆盖'a'
时'H'
,其余部分'ello\0'
进入后续字节。我相信整个问题在于
str = "Hello"
陈述。它似乎不像我想的那样工作。
请有人解释它是如何工作的?
c - C: char 指针数组未按预期动态工作
我的代码中有以下片段,我试图使用动态分配的char *
数组来保存来自标准输入的字符串。
我正在使用一个临时静态数组首先存储来自 的字符串stdin
,然后根据一定的条件将其复制到 的数组中char *
。我char *
在运行时为个人分配内存。
sono_of_ref
保存最终收到的字符串总数。例如 20。但是当我打印整个reference
数组以查看每个字符串时,我得到了最后一个相同的字符串,打印了 20 次。
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
c - c函数不工作
因此,当我使用以下代码对其进行测试时,我在 segfaulting 中实现了以下 c 函数:
这个方法应该返回一个 char 指针 = "$s2, 0($s3):
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:
c++ - 重载运算符 [] 用于 Char 赋值 - C++
尽管我确实有一些编程经验,但我对 C++ 还是很陌生。我已经构建了一个使用动态 char* 作为主要成员的Text类。类定义如下。
我遇到的问题是我不知道如何在传入的operator[]
给定索引处分配char 值。当前的重载运算符 operator[]
用于在提供的索引处返回char。有人有这方面的经验吗?
我希望能够做类似的事情:
任何帮助和/或建议表示赞赏!
提供的解决方案- 非常感谢所有回复
char& operator[](size_t&);
作品
java - JNI。如何从 jobject 获取 jstring 并将其转换为 char*
到目前为止,这是我所拥有的:我传递了一个具有 2 个字段的对象:字符串和整数,作为参数,我想发送信息以在 C 部分处理它,这在这一点上并不重要......我得到了抱怨在 jstring 声明处
我错过了什么?
c++ - 将指针传递给函数然后在指针上调用 free() 时“检测到堆损坏”
视觉工作室 2010
当我为 char 字符串分配内存,将字符串(指针)传递给函数,然后尝试释放内存时,我收到“检测到堆损坏”运行时错误。
我怀疑这是函数在返回后将内存标记为“已释放”的结果,但我仍然对如何解决这个问题感到困惑。简单地删除对 free() 的调用,我感到不舒服。
c - 由于 printf 不起作用,如何查看 char * 的内容?
这是我的代码片段:
所以主函数接受参数很好(测试)并通过它很好(测试)但是 hash() 函数虽然计算了哈希值,但没有返回正确的值,或者我无法在 main 中打印结果。从昨天开始,我一直在尝试检查错误,但我不是很聪明,所以任何帮助将不胜感激!