Tag: string

将标准错误重定向到C中的字符串

我希望能够将stderr重定向到C字符串,因为我需要在我正在编写的程序中使用该字符串。 我想避免写入文件(在硬盘上)然后读取文件以获取字符串。 完成这项工作的最佳方法是什么?

从字符串求解方程式到C的结果

我想知道是否有人有关于如何做一些听起来很简单但在尝试编程时看起来不像的信息或经验。 这个想法是:给出一个包含等式的字符串,例如:“2 * x = 10”(这很简单,但它可能变得非常复杂,例如sqrt(54)* 35 = x ^ 2;等等在…)和程序将返回x = 5,并可能给出他如何到达那里的日志。 这可行吗? 如果是这样,有没有人有领导? 有关信息,这个网站( http://www.numberempire.com/equationsolver.php )在PHP中做同样的事情,但不是开源的。 谢谢你的帮助 !

在C中更有效地使用strncpy复制n个字符

我想知道考虑到最大量的字符,是否有更干净,更有效的方法来执行以下strncpy 。 我觉得自己太过分了。 int main(void) { char *string = “hello world foo!”; int max = 5; char *str = malloc (max + 1); if (str == NULL) return 1; if (string) { int len = strlen (string); if (len > max) { strncpy (str, string, max); str[max] = ‘\0’; } else { strncpy (str, string, […]

char *和char 与strcpy()之间的区别

过去几个小时我遇到了一个问题,虽然我明白了。 这是我的麻烦: void cut_str(char* entry, int offset) { strcpy(entry, entry + offset); } char works[128] = “example1\0”; char* doesnt = “example2\0”; printf(“output:\n”); cut_str(works, 2); printf(“%s\n”, works); cut_str(doesnt, 2); printf(“%s\n”, doesnt); // output: // ample1 // Segmentation: fault 我觉得char * / char []有一些重要的东西,我没有来到这里。

strcpy_s如何工作?

众所周知,strcpy_s是strcpy的安全版本。 但我想知道它是如何工作的…… 让我们看一些例子。 strpy_s的声明: errno_t strcpy_s(_CHAR * _DEST,size_t _SIZE,const _CHAR * _SRC) [点拨 char dest[5]; char* src = “abcdefg”; strcpy_s(dest,5,src); 它将返回一个断言。 我想我能理解这一点,使用_SIZE确保我们不能复制比_SIZE更多的字符 但是……我无法理解这一点: char dest[5]; char* src = “abcdefg”; strcpy_s(dest,10,src); 我们仍然可以得到一个断言,那是怎么发生的? ps,错误是: 调试断言失败 表达式:(L“缓冲区太小”&& 0) 在VS2013中 strcpy_s会检查其体内dest的大小吗? 如果这是真的,怎么样? 如何检查像_DEST这样的指针?

为什么重新实现strlen作为循环+减法?

受到关于SQLite3的以下代码的这个问题的启发: static int strlen30(const char *z){ const char *z2 = z; while( *z2 ){ z2++; } return 0x3fffffff & (int)(z2 – z); } 这附带一条提交消息,说这个函数有助于int溢出。 我对这部分特别感兴趣: const char *z2 = z; while( *z2 ){ z2++; } 对我来说,这个循环前进到z2直到z2指向null终止符。 然后z2-z产生字符串长度。 为什么不对这部分使用strlen()并重写如下: return 0x3fffffff & (int)(strlen(z)); 为什么使用循环+减法而不是strlen() ? 什么可以循环+减法做什么strlen()不能?

为什么内部Lua字符串以他们的方式存储?

我想要一个简单的字符串表来存储一堆常量,我想“嘿!Lua那样做,让我使用一些函数!” 这主要是在lstring.h / lstring.c文件中(我使用的是5.2) 我将首先展示我很好奇的代码。 它来自lobject.h /* ** Header for string value; string bytes follow the end of this structure */ typedef union TString { L_Umaxalign dummy; /* ensures maximum alignment for strings */ struct { CommonHeader; lu_byte reserved; unsigned int hash; size_t len; /* number of characters in string */ } tsv; } TString; […]

我如何使用strcasestr()?

我#include 但是当我调用strcasestr(src, search); 我得到以下错误消息implicit declaration of function ‘strcasestr’ 。 我怎么编译: gcc-4.6 -Wall -lsqlite3 -lunac -Werror -O2 -o foo.out foo.c如何解决这个问题? 提前致谢。

为什么在c ++中使用c字符串?

现在有没有什么好的理由在C ++中使用C-strings? 我的教科书在某些方面的例子中使用它们,我觉得使用std :: string会更容易。

连接两个char数组?

如果我有两个char数组,如下所示: char one[200]; char two[200]; 然后我想制作第三个连接这些我怎么能这样做? 我试过了: char three[400]; strcpy(three, one); strcat(three, two); 但这似乎不起作用。 如果one和two设置如下: char *one = “data”; char *two = “more data”; 任何人都知道如何解决这个问题? 谢谢