Tag: 字符串文字

使用字符串文字处理char * init时崩溃,但不使用malloc处理崩溃

我今天正在读一本关于C的书,它提到以下是真的; 我很好奇为什么要让这个程序validation; 然后最终在这里发布,所以比我聪明的人可以教我为什么这两个案例在运行时是不同的。 该问题的细节与运行时之间的差异有关,如何处理(char *)是基于它是否指向创建为文字的字符串与使用malloc和手动填充创建的字符串。 为什么内存分配的内存更像这样保护? 另外,答案是否解释了“总线错误”的含义? 这是我写的一个程序,询问用户是否想要崩溃,以说明程序编译正常; 并强调在我的脑海中,两个选项中的代码在概念上是相同的 ; 但那就是为什么我在这里,要明白为什么他们不是。 // demonstrate the difference between initializing a (char *) // with a literal, vs malloc // and the mutability of the contents thereafter #include #include #include int main() { char cause_crash; char *myString; printf(“Cause crash? “); scanf(“%c”, &cause_crash); if(cause_crash == ‘y’) { myString = […]

尖括号为Const Char

以下代码指向只读内存中可用的char数组中的第一个字符 。 是对的吗?: const char * ptr = “String one”; 现在当ptr开始指向另一个内存位置时: ptr = “String two”; 第一个char数组会发生什么? 执行结束时是否释放了该内存位置?

修改作为函数传入的字符串文字

如果我在程序中有一个function int main(){ char *name = “New Holland”; modify(name); printf(“%s\n”,name); } 调用此函数 void modify(char *s){ char new_name[10] = “Australia”; s = new_name; /* How do I correct this? */ } 如何更新字符串文字名称(现在等于新荷兰语)的值与澳大利亚。 我认为我面临的问题是new_name是本地存储,因此在函数返回后,该变量不会被存储

在字符串文字中使用制表符是“不好的做法”吗?

作为后续内容是否必须在C和C ++中转义制表符? (注意我不是上述问题的作者)。 我已经知道这样的代码被认为是“不好的做法”。 这些评论似乎暗示了同样的事情。 但是,由于某些原因,该标准允许这种欺骗,所以有人必须要么没有发现它的伤害或有一个用例。 是不是逃避制表字符被广泛接受为“不良做法”?

C标准:字符集和字符串编码规范

我发现C标准(C99和C11)在字符/字符串代码位置和编码规则方面含糊不清: 首先,标准定义the source character set和the execution character set 。 本质上它提供了一组字形,但没有将任何数值与它们相关联 – 那么什么是默认字符集? 我不是在这里询问编码,而只是字形/曲目到数字/代码点映射。 它确实将universal character names定义为ISO / IEC 10646,但它是否说这是默认的字符集? 作为上述的扩展 – 我找不到任何说明数字转义序列\ 0和\ x代表什么字符的内容。 从C标准(C99和C11,我没有检查ANSI C)我得到了关于字符和字符串文字的以下内容: +———+—–+————+———————————————-+ | Literal | Std | Type | Meaning | +———+—–+————+———————————————-+ | ‘…’ | C99 | int | An integer character constant is a sequence | | | | […]

如何将双引号转换为字符串文字?

我使用printf()语句创建了以下输出: printf(“She said time flies like an arrow, but fruit flies like a banana.”); 但我想把实际报价放在双引号中,所以输出是 她说“时间过得像箭一样,但果实像香蕉一样苍蝇”。 不会干扰用于在printf()语句中包装字符串文字的双引号。 我怎样才能做到这一点?