Tag: string

在C中,const变量是否保证在内存中是不同的?

说到字符串文字,C99标准说(6.4.5.6): 如果这些数组的元素具有适当的值,则这些数组是否不同是未指定的。 如果程序试图修改此类数组,则行为未定义。 我找不到类似的警告或对const变量的明确保证。 可以在上下文中使用表达式&x == &y const int x=12; const int y=12; const int x=12; const int y=12; 评价为1 ? const变量和字符串文字怎么样(即使在32位little-endian平台上, &x == “\014\000\000″保证为0 )? 对于它的价值, 本博客文章中的 “字符串文字”部分给出了问题的背景。

从C中的变量构建字符串

我正在研究一个使用套接字的简单的二十一点游戏,由我的操作系统类提供。 我们得到了一个套接字接口,它已经来回传递一个字符数组。 我希望我能做到这样的事情: char[] msgOut = printf(“Dealer’s Card is %C %C”, char1, char2); sendMsg(msgOut); 然而 ,谷歌搜索引导我确定printf的返回值是Char的输出数量的int, 而不是 chars本身的char [](正如我所希望的那样)。 是否有另一个C函数可以让我从变量中构建字符串?

将未知长度的格式化数据写入字符串(C编程)

以下C函数: int sprintf ( char * str, const char * format, … ); 将格式化数据写入字符串。 作为str传递的数组的大小应该足以包含整个格式化的字符串。 但是,如果提前知道格式化字符串的长度怎么办? 如何使用此function(或类似其他function)写入格式化数据,其长度未知? 例如: #include int main () { char buffer [13]; int n, a=5, b=3; n=sprintf (buffer, “%d plus %d is %d”, a, b, a+b); printf (“[%s] is a %d char long string\n”,buffer,n); return 0; } 缓冲区需要为13或更大才能使其正常工作。 如果字符串长度未知,并且缓冲区(例如)已设置为5,则此操作无效。 我需要能够为碰巧比缓冲区大的字符串动态分配或重新分配缓冲区的东西。

Visual C ++:将传统的C和C ++字符串代码迁移到Unicode世界

我看到Visual Studio 2008及更高版本现在开始使用字符集设置为Unicode的新解决方案。 我的旧C ++代码只处理英文ASCII文本,并且满是: 像”Hello World”这样的文字字符串 char类型 char *指向已分配C字符串的指针 STL string类型 使用STL string构造函数(接受const char * )和STL string.c_str()从STL string到C字符串的转换,反之亦然 我需要对迁移此代码进行哪些更改,以便它在Visual Studio Unicode和Unicode启用的库的生态系统中工作? (我不需要它同时使用ASCII和Unicode,它可以是纯Unicode。) 是否也可以以独立于平台的方式执行此操作? (即,不使用Microsoft类型。) 我看到很多广泛的字符和Unicode类型和转换散落在周围,因此我的困惑。 (例如:wchar_t,TCHAR,_T,_TEXT,TEXT等)

C和C ++之间的字符串文字差异

据我所知,在C ++ 11之前,字符串文字在C和C ++之间几乎完全相同。 现在,我承认C和C ++在处理宽字符串文字方面存在差异。 我能找到的唯一区别在于通过字符串文字初始化数组。 char str[3] = “abc”; /* OK in C but not in C++ */ char str[4] = “abc”; /* OK in C and in C++. Terminating zero at str[3] */ 而技术上的差异只在C ++中很重要。 在C ++中, “abc”是const char [4]而在C中它是char [4] 。 但是,C ++有一个特殊的规则,允许转换为const char * ,然后转换为char *以保持C兼容性,直到C ++ 11不再应用该特殊规则时。 文字允许长度的差异。 但是,实际上任何编译C和C […]

在C中将Char转换为String

如何将字符转换为C中的字符串。我目前正在使用c = fgetc(fp)返回一个字符。 但是我需要在strcpy中使用一个字符串

什么是C字符串和C ++字符串之间的区别?

什么是C字符串和C ++字符串之间的区别。 特别是在进行动态内存分配时

如何从C字符串中删除第一个字符?

谁能帮帮我吗? 我需要从C中的char *中删除第一个char * 。 例如, char * contents包含一个’\n’字符作为数组中的第一个字符。 我需要检测并消除这个字符,在它被“消毒”后修改原始变量。 任何人都可以帮我代码吗? 我对C完全不熟悉,似乎无法弄明白。

sizeof为null终止的const char *

const char* a; 如何确保字符串’a’为空终止? 当a =“abcd”并且我做sizeof(a)时,我得到4.这是否意味着它不是以null结尾? 如果是的话,我会得到5?

strcmp行为

当我运行以下代码时: #include int main(int argc, char *argv[]) { int p = 0; p = strcmp(NULL,”foo”); return 0; } 我得到分段错误。 回声$? 139.但是当我跑的时候 #include int main(int argc, char *argv[]) { int p = 0; strcmp(NULL,”foo”); // Note removed assignment return 0; } 我没有任何分段错误。 有人可以请一些光吗? 这是我的gcc信息: > gcc –version gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-8)