Tag: char

我只是想不通strcat

我知道我不应该使用这个function,我不在乎。 上次我检查了strcat的规范时,它说了更新第一个值以及返回相同的内容。 现在,这是一个非常愚蠢的问题,我希望你解释一下,就像你和一个非常愚蠢的人说话一样。 为什么这不起作用? char* foo=”foo”; printf(strcat(foo,”bar”)); 编辑:我不知道char []和char *之间的区别。 我如何分配255个字符的字符串? 编辑2:好的,好的,所以char [number]分配了那么多字节的字符串? 说得通。 谢谢。 编辑3:另外,如何在不声明的情况下使用字符数组? 我会将它作为char [255]进行类型转换吗? 编辑4:strcat((char [256])“foo”,“bar”)返回错误。 我很厌倦C. 编辑5:strcat((char [256])“foo”,(char [])“bar”)也是如此。 编辑5: char[256] foo=”bar”; 真正顺利。 “预期的标识符”

位字段如何与字符类型一起使用?

struct stats { char top : 1; char bottom : 1; char side : 2; } MyStat; 我用整数看过这种格式但是上面的char位字段是如何工作的以及它代表什么? 谢谢。

计算字符串中每个字母的出现次数

如何计算字符串中每个字母(忽略大小写)中c的出现次数? 因此它会打印出来的letter: # number of occurences ,我有代码来计算一个字母的出现次数,但我如何计算字符串中每个字母的出现次数? { char int count = 0; int i; //int length = strlen(string); for (i = 0; i < 20; i++) { if (string[i] == ch) { count++; } } return count; } 输出: a : 1 b : 0 c : 2 etc…

为什么将字符串文字传递给char *参数有时只是编译器错误?

我正在使用C和C ++程序。 我们曾经在没有make-strings-writable选项的情况下进行编译。 但那是一堆警告,所以我把它关掉了。 然后我得到了一堆forms的错误“无法将const char *转换为函数foo的argmuent 3中的char *”。 所以,我经历了很多修改来解决这些问题。 然而,今天,程序崩溃,因为文字“”被传递到一个期待char *的函数,并将第0个字符设置为0.它没有做任何坏事,只是试图编辑一个常量,并且崩溃。 我的问题是,为什么不是编译器错误? 如果它很重要,这是在使用gcc-4.0编译的mac上。 编辑:添加代码: char * host = FindArgDefault(“EMailLinkHost”, “”); stripCRLF(linkHost, ‘\n’); 哪里: char *FindArgDefault(char *argName, char *defVal) {// simplified char * val = defVal; return(val); } 和 void stripCRLF(char *str, char delim) { char *p, *q; for (p = q = str; *p; […]

strcmp或string :: compare?

我想比较两个字符串。 strcmp有可能吗? (我试过,似乎没有用)。 string::compare解决方案吗? 除此之外,还有一种方法可以将string与char进行比较吗? 感谢您的早期评论。 我是用C ++编写的,是的,就像你提到的一样,它是std::string 。 我没有发布代码,因为我想学习一般知识,这是一个很长的代码,所以它与问题无关。 我想我已经了解了C ++和C之间的区别,感谢你指出这一点。 我现在将尝试使用重载运算符。 顺便说一句, string::compare也有效。

C将char数组拆分为不同的变量

在C中如何用分隔符分隔char数组? 或者操纵字符串更好? 有什么好的C char操作函数?

从C中删除字符串中的字符

我只能访问’C’并需要替换字符数组中的字符。 对于这个相对简单的程序,我还没有想出任何干净的解决方案。 我传递了一个字符数组,例如: char strBuffer[] = “/html/scorm12/course/course_index.jsp?user_id=100000232&course_id=100000879&course_prefix=ACQ&version=2&scorm_version=3&roster_id=100011365&course_name=Test%20Course%201.2&mode=browse&course_number=0000&mode_id=1”; 我需要修改此缓冲区以替换所有& 与& 。 生成的缓冲区不必覆盖strBuffer(可以创建新的缓冲区)。 有什么建议? 编辑: 在过去,我已经在循环中完成了strstr函数,但是正在寻找一个更简单的解决方案,可能是C等效于String.Replace方法。 编辑: 对于我的迫切需求,以下是我所需要的一切。 char strBuffer[] = “/html/scorm12/course/course_index.jsp?user_id=100000232&course_id=100000879&course_prefix=ACQ&version=2&scorm_version=3&roster_id=100011365&course_name=Test%20Course%201.2&mode=browse&course_number=0000&mode_id=1″; char strTemp[1024]; char *s = (char*)strBuffer; int i=0; while (*s) { strTemp[i++] = *s; if (strncmp(s,”&”,5) == 0) { s += 5; } else s++; } strTemp[i] = 0; 未来的修改: 创建一个实用程序函数来存储此函数。 将搜索字符串作为参数传递。 确定搜索字符串的长度,因此可以删除硬编码的5。 动态分配strTemp变量。 检查未找到空字符串和字符时出错。 […]

在C中创建extern char数组

如何在C中创建外部字符数组? 我已经尝试了各种方法来定义char cmdval[128]但它总是说undefined reference to ‘cmdval’ 我想在first.c文件中的cmdval中放一个字符串,并在其他second.c文件中使用它。 我尝试添加一个带有extern char cmdval[128]的global.h文件,但没有运气。 更新: global.h extern char cmdval[128]; first.c #include “global.h” char cmdval[128]; function(){ strcpy(cmdval, “a string”); } second.c #include “global.h” function(){ printf(“%s \n”,cmdval); //error } 失败:(“未定义引用`cmdval’” 编辑:我在linux上工作(编辑一个迷你OS xv6,然后在qemu编译并运行它),我不知道它是否是一个障碍

C / C ++如何在没有嵌套循环的情况下复制多维char数组?

我正在寻找一种将多维char数组复制到新目标的智能方法。 我想复制char数组,因为我想编辑内容而不更改源数组。 我可以构建嵌套循环来手动复制每个字符,但我希望有更好的方法。 更新: 我没有2. level维度的大小。 给定的只是长度(行)。 代码如下所示: char **tmp; char **realDest; int length = someFunctionThatFillsTmp(&tmp); //now I want to copy tmp to realDest 我正在寻找一种方法,将tmp的所有内存复制到空闲内存中,并将realDest指向它。 更新2: someFunctionThatFillsTmp()是Redis C lib credis.c中的函数credis_lrange()。 在lib tmp中创建了: rhnd->reply.multibulk.bulks = malloc(sizeof(char *)*CR_MULTIBULK_SIZE) 更新3: 我试过用这行代码使用memcpy: int cb = sizeof(char) * size * 8; //string inside 2. level has 8 chars memcpy(realDest,tmp,cb); cout […]

Char *(指针)function

我需要在函数中传入char *并将其设置为cstring值。 我可以在函数中将其正确设置为字符串,但它似乎在首先调用char *函数的函数中没有正确打印出来。 int l2_read(char *chunk,int length) { chunk = malloc( sizeof(char) * length); int i; for(i = 0; i < length; i++){ char c; if(read(&c) < 0) return (-1); // this gets a single character chunk[i] = c; } printf("%s",chunk); // this prints fine return 1; } // main char *string; int value […]