Tag: strcpy

Valgrind警告:我应该认真对待它

背景:我有一个模仿fgets(character, 2, fp)的小例程,除了它从字符串而不是流中获取字符。 newBuff是动态分配的字符串,作为参数传递,字符声明为char character[2] 。 常规: character[0] = newBuff[0]; character[1] = ‘\0’; strcpy(newBuff, newBuff+1); strcpy在从中读取每个字符时复制信息丢失。 问题:Valgrind确实警告我这个活动,“源和目的地重叠在strcpy(0x419b818,0x419b819)”。 我应该担心这个警告吗?

为什么我不能动态分配这个结构字符串的内存?

比方说,我有一个结构: typedef struct person { int id; char *name; } Person; 为什么我不能做以下事情: void function(const char *new_name) { Person *human; human->name = malloc(strlen(new_name) + 1); }

无法在字符串中添加int,尝试使用sprintf,但我遇到了麻烦

我正在尝试读取文件并打印文件中的所有单词,忽略所有其他空格和符号。 我有它使用strcpy,但它给了我一个错误,我正在尝试使用sprintf,但我真的不明白这个function的话。 它打印随机整数而不是字符串。 编辑:我对C完全不熟悉,所以我的指针不太好。 FILE *file; file = fopen(“sample_dict.txt”, “r”); int c; int wordcount = 0; int count = 0; const char *a[10]; char word[100]; do { c = fgetc(file); //error statement if (feof(file)) { break; } if (isalpha(c) && count == 2) { printf(“%s\n”, word); memset(word, 0, sizeof(word)); count = 1; wordcount++; } if […]

使用c中的链表制作strcpy函数

我使用链表创建自己的strcpy函数但无法完成。 没有使用链表,它可能是这样的 char* cp2014strcpy(char * dest_ptr, const char * src_ptr) { char* strresult = dest_ptr; if((NULL != dest_ptr) && (NULL != src_ptr)) { while (NULL != src_ptr) { *dest_ptr++ = *src_ptr++; } *dest_ptr = NULL; } return strresult; } 但我无法得到如何使用链表制作strcpy。

为什么从文件函数读取崩溃?

试图从文件中读取多行以将它们存储在由字符串元素组成的结构中,但是当我运行程序时它只是崩溃而我不知道原因。 有问题的function: Hashtbl* loadfromfile(Hashtbl* hashtbl, char *path){ int i = 0; char line[100]; char* string[40]; FILE *f = fopen(path, “r”); if(f == NULL){ printf(“FILE NO FOUND!”); }else{ while(fgets(line, sizeof(line), f)!=NULL){ strcpy(string[i],line); i++; } fclose(f); for(i = 0; i<(SIZE*2); i++){ strcpy(hashtbl[i].subscript, string[i]); i++; } for(i = 1; i<(SIZE*2); i++){ strcpy(hashtbl[i].value, string[i]); i++; } return hashtbl; } […]

为什么字符串复制function只是指定指针不起作用?

考虑strcpy这种实现: void my_strcpy(char target[], char source[]) { target = source; } int main(void) { char target[20]; char source[] = “Source String”; my_strcpy(target, source); printf(“Target: %s”, target); return 0; } 这不起作用,它让我质疑我对C中的字符串和数组的理解。 这是我的推理: target和source实际上只是指向数组的第一个元素的指针,即。 target == &target[0]和source == &source[0] 。 当我设置target = source ,我将指针target指向指向target = source指向的相同内存地址。 现在当我printf target ,它也应该打印”Source String” 。 但事实并非如此。 有人可以解释原因吗?

将strtok的结果复制到C中的2个字符串

好的,所以我有代码 char * token; char * delimiter =“”; token = strtok(command,delimiter); strcpy(命令,令牌); token = strtok(NULL,delimiter); strcpy(arguments,token); 当我运行它时它给了我EXC_BAD_ACCESS,是的,命令和参数已经定义了。

‘\ 0’末尾的C字符串

在编写c代码时,我尝试编写自己的strcpy代码,我遇到了这个问题。 #include #include void strcpy2(char *s, char *t); int main() { char a[10] = “asds”; char b[10] = “1234567890”; strcpy2(a, b); printf(“Copy completed! : %s”, a); return 0; } void strcpy2(char *s, char *t) { while ((*s++ = *t++)); } 错误代码:已完成退出代码-1073741819(0xC0000005) 感谢这个问题 ,我学会了字符串应该以’\ 0’结尾,但为什么上面的代码不起作用,即使它在声明时不会导致错误? (当char b [10] =“123456789”时效果很好) 那么,’\ 0’究竟如何影响这个过程并最终导致错误? (运行时?编译时间等等)(我只知道’\ 0’应该是字符串的结尾)

strcpy和“=”之间有什么区别?

我想知道char* test = “test”和strcpy(test, “test”)是否有区别,如果有的话,这是什么区别。 谢谢。

strcpy传递初始化空指针c

我正在尝试以下代码: int main() { char *yo = “yo”; char *whaddup = NULL; strcpy(whaddup,yo); } 我得到了一个段错误。 在这里完成C noob – 其他地方说我应该将whaddup初始化为数组。 为什么我不能传入指向null的指针?