Tag: strcat

strcat实现

我试图自己实现strcat,并且我发现了像这样的str的strcat实现……但是当我使用它时,存在分段错误。 下面的代码有什么问题? char * strcat(char *dest, const char *src) { size_t i,j; for (i = 0; dest[i] != ‘\0’; i++) ; for (j = 0; src[j] != ‘\0’; j++) dest[i+j] = src[j]; dest[i+j] = ‘\0’; return dest; }

strcat将char连接到字符串上?

使用GDB,我发现在尝试此操作时出现了分段错误: strcat(string,&currentChar); 鉴于该字符串被初始化为 char * string = “”; 和currentChar是 char currentChar = ‘B’; 为什么会导致分段错误? 如果strcat不能用于此,我怎么能将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”; 真正顺利。 “预期的标识符”

realloc():重新分配时为下一个大小无效,为char *上的strcat腾出空间

我在以下代码上收到无效的内存错误: printf(” %s\n”,”FINE 5″); printf(“%s LENGTH IS: %d\n”,”FINE 6″,strlen(“: “)); buffer = (char *)realloc(buffer, strlen(buffer)* sizeof(char) + (strlen(“: “)+1)* sizeof(char)); printf(” %s\n”,”FINE 7″); strcat(buffer, “: \0”); 输出: 精细5 精细6长度是:2 *检测到glibc * ./auto:realloc():下一个大小无效:0x08cd72e0 *** ======= Backtrace:========= /lib/tls/i686/cmov/libc.so 0.6(+ 0x6b591)[0x6dd591] 这里需要注意的是Fine 7从未打印过。 每次运行时无效的下一个大小错误位于同一位置。 发现这种相关性

使用strcat进行分段故障

这是我的代码: char *name, name_log=”log-“; ——从用户那里得到’名字’—– strcat(name_log, name); char ext[] = “.log”; strcat(name_log, ext); 我最终需要的是name_log =“log-‘name’.log”,但我得到了一个分段错误错误:((。我做错了什么,我该如何解决?Thx

strcat()实现有效,但最后导致核心转储

我的strcat(char*, const char*)似乎工作,但它导致核心转储。 strcat()实现: char* strcat(char* dest, const char* src) { char* tmp = dest; while(*tmp) ++tmp ; while( (*tmp++ = *src++ ) != ‘\0’) ; return (dest); } int main()中的代码,我调用strcat(): char arr3[] = “Mr. “; char arr4[] = “Smith”; printf(“Hello %s!”, strcat(arr3, arr4)); 它实际上连接了两个字符串并将其打印出来但仍然导致了核心转储。 输出: 你好先生史密斯!中止(核心倾倒) 我做错了什么?