c-strings相关内容

为什么`得到()`是德precated?

在使用获得()在我的code,编译器喊声 警告:'得到'功能是危险的,不应该used.` 和警告:'得到'是去precated(在/usr/include/stdio.h:638声明) [-Wde precated-声明] 任何特殊的理由? 解决方案 的有人可以解释为什么编译器显示这样的...?的 是的,因为,在获得()函数是危险的,因为它从缓冲区溢出问题受到影响。任何人都 ..
发布时间:2016-08-19 15:24:29 C/C++

实施`strtok`的分隔符有多个字符

code片断: 字符海峡[] =“String1中:: String2的:STRING3:串,:: STRING5” 字符*熟食店=“::”; 字符*令牌= strtok的(STR,熟食);而(令牌!= NULL) { 的printf(“令牌= \\”%s \\“的\\ N”标记); 令牌= strtok的(NULL,熟食); } 以上code段产生的输出:令牌=“字符串1” 令牌= ..
发布时间:2016-08-19 14:36:45 C/C++

为什么我不能编辑一个char *一个char?

下面是一个非常简单的例子。它使用的是Mac OS X(雪豹)的gcc编译罚款。在运行时,它输出总线错误:10.这里发生了什么。 的char * A =“ABC”; 一个[0] ='c'的; 解决方案 您code组 A 的指针“ABC” ,它是不能被修改文字的数据。当你的code违反了这个限制,并试图修改数值出现总线错误。 试试这个来代替:的char a [] =“ABC”; 一个[0] ..
发布时间:2016-08-19 14:36:27 C/C++

如何提取在C串子?

我试着用STRNCMP但如果我给它我想提取字节的具体数量它只。 字符行[256] = this“是”的例子。 //我想提取“是” 炭线[256] =这是“的”的例子。 //我想提取“也” 焦线[256] =这是最后的“榜样”。 //我想提取“榜样” 字符子[256] 我将如何提取所有在“”的元素呢?并把它放在变量子? 解决方案 注意:我编辑这个答案后,我意识到,作为写在code会导致一 ..
发布时间:2016-08-19 14:07:31 C/C++

正在与strtol,不安全的strtod?

似乎与strtol()和关于strtod()有效地允许(和力),你要抛弃常量性在一个字符串: 的#include<&stdlib.h中GT; #包括LT&;&stdio.h中GT;诠释主(){ 为const char *富=“你好,世界!”; 字符*栏; 与strtol(富,和放大器;酒吧,10); //或关于strtod(富,&安培;巴); 的printf(“%d个\\ ..
发布时间:2016-08-19 13:32:52 C/C++

如何写出更好的strlen函数?

我读“写大code卷2”,并显示以下的strlen impelementation: INT myStrlen(字符* S) { 字符*启动; 开始=秒; 而(* S!= 0) { ++ S; } 返回秒 - 启动; } 书上说,这实现是典型的缺乏经验的C程序员。我已经用C编码在过去的11年,我不知道怎样写一个函数比这更好的在 ..
发布时间:2016-08-18 22:26:59 C/C++

从C字符串中去除第一和最后一个字符

我有一个C字符串,它看起来像“NMY stringP”,其中N和P可以是任何字符。我怎么可以编辑成“我的字符串”用C? 解决方案 要“删除”的第一个字符点到第二个字符: 字符myStr的[] =“NMY stringP” 的char * p = myStr的; p ++; / *'N'不是'p` * / 要删除的最后一个字符替换为一个'\\ 0' P [strlen的(P)-1] = ..
发布时间:2016-08-18 22:24:55 C/C++

发生什么内存后,C字符串'\\ 0'?

出奇的简单/愚蠢/基本的问题,但我不知道:假设我想回到我的功能的C字符串,它的长度我不知道在函数开头的用户。我可以仅放置于在开始时的长度的上限,并且根据处理的尺寸可以缩小。 现在的问题是,有没有什么错分配足够的堆空间(上限),然后终止字符串处理过程中以及短的呢?即如果我坚持一个'\\ 0'到所分配的内存的中间,确实(一)免费()仍能正常工作,和(b)做空间后'\\ 0'变得无关紧要?一旦'\\ ..
发布时间:2016-08-18 22:02:07 C/C++

展开引号字符串内的宏

可能重复:结果 C宏创建的字符串 我有一个接受的类型的char * 的一个参数,比如 F A功能(“字符串”); 结果 如果字符串参数是通过即时函数调用定义,怎么能宏在字符串体内扩大呢? 例如: 的#define颜色#00FF00 F(“ABC COLOR”); 将相当于 F(“ABC#00FF00”); 而是不进行扩张,而且功能字面上接收 ABC COLOR 。 在我特别需 ..
发布时间:2016-08-18 15:07:12 C/C++

在C字符串的一部分打印

有没有办法为一个字符串的唯一打印一部分? 例如,如果我有 的char *海峡=“你好”; 有没有办法只打印“你好”,牢记我要打印的子串的长度是可变,不总是5个字符? 我知道,我可以使用为循环和的putchar ,或者我可以在阵列复制,然后添加空终止,但我不知道是否有一个更优雅的方式? 解决方案 试试这个: INT长度= 5; 的printf(“%* * S”,长度,长度,“你好”); ..
发布时间:2016-08-18 14:24:09 C/C++

字符串终止 - 焦C = 0对焦炭C ='\\ 0'

在终止字符串,在我看来,这在逻辑上字符C = 0 等同于的char c ='\\ 0',因为“空”(ASCII 0)字节是 0 ,但通常人们倾向于做'\\ 0'来代替。这是纯粹出于preference,或者它应该是一个更好的“惯例”? 什么是preferred选择? 编辑: K&安培; R 的 是的:“字符常量'\\ 0 重新presents值为零的字符,空字符。'\\ 0'经常写,而不是 0 ..
发布时间:2016-08-18 12:58:11 C/C++

为什么的strdup认为是邪恶

我已经看到了一些海报,说明的strdup 是邪恶的。是否有这样的共识?我用它没有任何负罪感和可以看到没有理由比使用的malloc / 的memcpy 更糟。 我认为可能赚取的唯一的事情的strdup 的声誉是,来电者可能会滥用它(如没有意识到他们必须释放内存退换;尝试strcat的到一个strdup'ed字符串的结尾)。但随后malloc分配字符串不被滥用的可能性,无论是免费的。 感谢您的答复 ..
发布时间:2016-08-17 23:30:45 C/C++

从函数返回“c_str”

这是从一个小库,我在网上找到: 为const char * GetHandStateBrief(常量PostFlopState *状态) { 静态的std :: ostringstream出来; // ...函数的其余部分... 返回out.str()。c_str() } 在我的code我这样做:为const char * D = GetHandStateBrief(安培 ..
发布时间:2016-08-17 23:28:06 C/C++开发

是的sprintf(缓冲,"%S [...]&QUOT ;,缓冲,[...])安全吗?

我看到使用这种模式来连接到一些code我工作的一个字符串: 的sprintf(缓冲,“%S<输入类型=”文件“NAME =”%S“/> \\ r \\ n”,缓冲,身份证); sprintf的(缓冲,“%S< / TD>”中,缓冲区); 和我相当肯定它不是安全的C.你会发现,缓存既是输出和第一个输入。 的除了一个缓冲区溢出的明显的可能性,我相信没有保证缓冲区不会被启动 ..
发布时间:2016-08-17 23:19:01 C/C++

是否有可能只打印出一个C字符串的某一部分,而不做一个独立的子?

说我有以下几点: 的char *字符串=“你好,你怎么样?” 是否有可能只打印出最后5个字节这个字符串的?样仅在第5个字节?有的printf的一些变化,将允许此? 解决方案 是否有可能只打印出最后5个字节这个字符串的? 是的,只是一个指针传递到第五到最最后一个字符。 5 - 您可以通过字符串+ strlen的(字符串)确定此 只能显示前5个字节是什么? 使用一 ..
发布时间:2016-08-17 23:15:03 C/C++

Ç - 字符串分割到字符串数组

我不完全知道如何在C做到这一点: 的char * curToken = strtok的(字符串,“”); // curToken =“ls -l命令”,我们会说 //我需要一个包含“LS”的字符串数组,“-l”,并为NULL execvp() 我将如何去这样做呢? 解决方案 既然你已经看着 strtok的只是继续沿着相同的路径和利用空间分割你的字符串(“)作为分隔符,然后使用一些如的r ..
发布时间:2016-08-17 22:17:25 C/C++

用等号C字符串比较

我有这样的code: 的char * name =“乔治”如果(名称==“乔治”) 的printf(“这是乔治”) 我认为C字符串无法 == 符号进行比较,我必须使用 STRCMP 。当我用gcc编译不明原因(4.7.3版本),这code工作。我虽然那是因为它是像这样我在谷歌搜索比较指针和很多人说这是错的,并与比较== 不能这样做,这是不对的。那么,为什么这种比较方法的工作? 解决 ..
发布时间:2016-08-17 21:53:54 C/C++

为什么写有&QUOT初始化字符串时,我得到一个分段错误; char *之S"但不与QUOT;个char [] QUOT ;?

以下code接收第2行赛格故障: 的char *海峡=“字符串”; 海峡[0] ='Z'; 的printf(“%S”,STR); 虽然这工作得很好:字符海峡[] =“字符串”; 海峡[0] ='Z'; 的printf(“%S”,STR); 测试与MSVC和海湾合作委员会。 解决方案 参见C常见问题解答,问题1.32 问::?什么是这些初始化的区别结果 ..
发布时间:2016-08-17 20:20:08 C/C++

没有较为混乱指针

以下是我的code: 的#include<&stdio.h中GT; 诠释的main() { 所以char a [10] =“你好!”; 无效F(焦B〔]) { // 1的printf(“* a为:%S \\ n”,*一); 的printf(“&放大器;一为:%p \\ n”,&安培; A); // 2的printf( ..
发布时间:2016-06-04 15:11:37 其他开发