问题标签 [strncpy]

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 投票
3 回答
2853 浏览

c - malloc 和 strncpy

我试图将一个字符串分成两部分以传递给两个孩子。第一部分应为 12 个“0”字符,第二部分应为 13 个“1”字符。当我执行这段代码时,我没有得到这些东西。具体来说,这是输出。左家长:00000000000 右家长:0000000000001 我不知道为什么,有人可以帮忙吗?

0 投票
3 回答
17354 浏览

string - 如何创建自己的 strcpy 函数?

我正在尝试设计一个程序,在该程序中我将创建一个类似于 c 标准库中的函数的 3 个函数(strlen、strcmp、strcpy)。前两个我已经接近完成,只有最后一个是主要问题。我正在尝试创建一个与标准函数 strcpy 具有相同功能的函数。这是我到目前为止所拥有的。

到目前为止,我已经获得了“源”的长度并将其存储在“计数”中。我需要采取的下一步是什么?如果可能的话,我宁愿使用另一个 for 循环和 if 语句。谢谢!

** **编辑**** _

这就是我现在所拥有的...

}

输出:

第二次运行(我遇到问题的地方):

我还需要在我的代码中输入什么,以便它复制每个字母直到它用完空间,或者它复制每个字母直到它用完要复制的字母?

0 投票
1 回答
438 浏览

c - 由于 strncpy 检测到堆栈粉碎

我在交流程序中有问题。我制作了一个函数,它对文本文件中的变量进行标记并将它们保存在一个集合中。问题是 string.h 中的 strncpy 函数在我的程序中表现得很奇怪。我将代码分解为最小的示例:

打印出来的第一个变量是“你好”,这是完全正确的行为。第二个变量已经包含“123 test”。但是因为我在 123 之后设置了 \0 ,所以其余的不会被打印出来。打印后,我立即得到*堆栈粉碎检测*中止。我认为问题在于,strncpy 函数试图写入超过 8 个字符,但我告诉函数从位置 6 到 9 的文本打印。那么为什么 strncpy 试图复制超过三个字符?

我在 C 编程方面没有太多经验,并尝试了很多东西,比如调试和打印输出以找到问题,但我还不知道。我希望有人能帮助我。

0 投票
1 回答
130 浏览

c - ANSI C strncpy 弄乱了屏幕输出和其他变量的值

使用 ANSI C,屏幕在strncpy. 此外,如果我尝试打印任何int变量值都会变得不正确。strncpy但是,如果我在一切正常之前移动打印线。

有人知道为什么吗?

0 投票
1 回答
10146 浏览

c - 格式“%s”需要“char *”类型的参数

为了锻炼我的 C 编程技能,我正在尝试自己编写 strncpy 函数。这样做我不断遇到错误,最终解决了大部分错误,我没有进一步的灵感继续下去。

我收到的错误是:

问题是这是一个非常常见的错误,并且它也已经在 SO 上进行了描述,只是我似乎无法应用其他人已经指出的提示。我知道我在打印变量时使用了错误的类型,当我使用 %d 格式时,它会返回一个整数,这可能是第一个字符的 ASCII 值,因为它在增加最大数时不会改变要复制的字节数。

使用 GDB,我发现在完成 while 循环迭代时 b 变量包含正确的字符串,但我似乎仍然无法打印它。

我可能缺乏关于 C 语言的一个非常基本的知识部分,对于提出这个新手问题(再次)我深表歉意。如果您能提供反馈或指出我的代码中的其他缺陷,我将不胜感激。

0 投票
1 回答
58 浏览

c - 查找父文件夹的路径

我正在尝试在 c 中解析一个字符串,如下所示:

做一个函数,那个函数应该返回这个:

我尝试了很多东西...

我不能使用操作系统库。我必须这样做。

我尝试像这样调用函数:

但我得到一个段错误......

0 投票
4 回答
947 浏览

c - 如何在 C 中将 strncpy 与 for 循环一起使用?

我正在编写一个程序,它将在一个文件中每 3 个数字并将它们转换为它们的 ASCII 符号。所以我想我可以将这些数字读入一个字符数组,然后将每 3 个元素设为第二个数组中的 1 个元素,将它们转换为 int,然后将它们打印为 char。

然而,我坚持每三个元素。这是我这部分的代码片段:

这段代码给我的是前 3 个数字,十五次。我尝试将 i 增加 3,这给了我前 3 个数字 5 次。如何使用 strncpy 编写一个 for 循环,以便在复制 n 个字符后移动到下一个 n 个字符?

0 投票
4 回答
2027 浏览

c - c 中 fread() 和 strncpy() 中的空字符

我是一般的新程序员,我现在已经开始使用 c。我正在尝试解码 IDEv3 mp3 标签,但遇到了各种问题。当我使用 fread() 和 strncpy() 命令时,我注意到两者都需要将 \n 字符作为结束参考点。(也许我错了,这只是一个观察)

当我打印输出时,它们会产生一个不可读的字符。作为解决该问题的解决方案,我使用 fread() 4 个字节而不是 3 个,以便生成 (8)\n 个字符(整个字节),第二步我使用 strncpy() 和 3 个字节分配然后我用于打印的内存。理论上,当我使用 fread() 时,我不应该遇到这个问题。

代码示例:

0 投票
1 回答
46 浏览

c - 用另一个文件的同名命名一个文件

我正在阅读 C Primer Plus 第 5 版,我在 I/O 章节。我提出了一个示例(第 451 页),它做了一些事情,在某些时候它创建了一个新文件,该文件以现有文件命名,但以 .red 结尾。例如,如果我有这个文件“test”,程序会创建一个“test.red”。看不懂下面的。。

我查看了命令 strcpy 的定义。它将 arv[1](它包含源文件)中的前 LEN-5 个字符复制到名称中。strcat 命令将 .red 添加到末尾。但是,我无法理解 this 的存在name[LEN - 5] = '\0';。我删除了它,程序仍然运行良好。
编辑
我为这些行发表了书中的评论..

为了构造输出文件的新名称,程序使用 strncpy() 将名称 eddy 复制到数组名称中。LEN - 5 参数为 .red 后缀和最后的空字符留出了空间。如果 argv[2] 字符串长于 LEN – 5,则不会复制空字符,因此程序会添加空字符以防万一。当 strcat() 函数附加该字符串时,在 strncpy() 调用之后 name 中的第一个空字符被 .red 中的句点覆盖,在这种情况下产生 eddy.red。

0 投票
4 回答
2415 浏览

c - 关于 strcat()、strncpy()、strncat() 等字符串函数的问题?

代码 1

输出-abchello computer

代码 2

输出-@#^hello computer

代码 3

输出-hello

代码 4

输出-abchello

问题

Q-1) 为什么abchello computer会显示 incode 1@#^hello computerin code 2?垃圾@#^从哪里来?

Q-2) 为什么NULL '\0'需要外部添加strncpy()而不是分别strncat()显示在code 3code 4中?

注意 - 如果在code 4I do char str[100];then@#^hello中会显示,但字符串仍以不添加 NULL 的方式结束