Tag: strcpy

警告:内置函数’strlen’和’strcpy’不兼容的隐式声明

我刚刚完成了我的刽子手游戏,作为最后一步,我正在进行一些代码清理和优化,但我似乎无法理解为什么我会收到以下两个警告: 警告:内置函数’strlen’的不兼容隐式声明 警告:内置函数’strcpy’的不兼容隐式声明 使用它们的代码在这里: for(i = 1; i <= random; i++) fgets(word, 100, f); fclose(f); for(i = 0; i < strlen(word); i++) if(word[i] == '\n') word[strlen(word)-1] = '\0'; lungime = strlen(word); strcpy(word2, word); 我所做的是使用fgets从文件中读取随机单词。 在此之后,我删除了fgets自动放置的’\ n’。 最后,我在word2中复制了这个单词。 二手图书馆: #include #include #include 变量声明: int random, n = 0, i, j, lengh, tries = 5, ok = […]

strcpy()的分段错误

这有效: int main() { char *t = “Hello”; t = “World”; printf(“%s”, t); } 但是这给出了分段错误: int main() { char *t = “Hello”; strcpy(t, “World”); // the only difference printf(“%s”, t); } 为什么?

程序在char指针上使用strcpy时中止? (在char数组上正常工作)

我很困惑为什么以下不起作用: char * f = “abcdef”; strcpy(f, “abcdef”); printf(“%s”,f); char s[] = “ddd”; strcpy(&s[0], “eee”); printf(“%s”, s); 在这两个例子中,strcpy收到了一个char *但是在第一个例子中它死了一个可怕的死亡。

strcpy 的分段错误

我想知道为什么我在下面的代码中出现分段错误。 int main(void) { char str[100]=”My name is Vutukuri”; char *str_old,*str_new; str_old=str; strcpy(str_new,str_old); puts(str_new); return 0; }

C strcpy() – 邪恶?

有些人似乎认为C的strcpy()函数是坏的还是邪恶的。 虽然我承认通常最好使用strncpy()以避免缓冲区溢出,但以下( strdup()函数的实现对于那些不够幸运的人来说)安全地使用strcpy()并且永远不会溢出: char *strdup(const char *s1) { char *s2 = malloc(strlen(s1)+1); if(s2 == NULL) { return NULL; } strcpy(s2, s1); return s2; } *s2保证有足够的空间来存储*s1 ,并且使用strcpy()我们不必将strlen()结果存储在另一个函数中,以便稍后用作strncpy()的不必要(在本例中)长度参数。 然而有些人用strncpy()甚至memcpy()编写这个函数,它们都需要一个length参数。 我想知道人们对此的看法。 如果您认为strcpy()在某些情况下是安全的,请说明。 如果你有充分的理由不在这种情况下使用strcpy() ,请给它 – 我想知道为什么在这种情况下使用strncpy()或memcpy()会更好。 如果你认为strcpy()没问题,但不在这里,请解释一下。 基本上,我只是想知道为什么有些人在使用strcpy()时会使用memcpy() ,而其他人则使用plain strncpy() 。 是否有任何逻辑可以优先选择三个(忽略前两个的缓冲区检查)?

strcpy的C实现不会改变变量值

所以,我正在尝试实现我自己的strcpy以更好地理解指针在C中是如何工作的,到目前为止我都处于亏损状态。 我尝试了很多不同的方法,尝试使用网络中的代码,以后可能会使用它,但即便是那些也无法工作。 我相信我可能会在main方法上以错误的方式调用函数。 我将变量的指针传递给函数,以便函数可以更改变量的值,并在函数调用中,我给出指针的地址,以便方法可以获取正确的数据。 至少我相信这是它的工作原理,无论如何我都能理解。 以下是函数和方法调用: function调用: void my_strcpy( char *dest, const char* src ) { dest = malloc(sizeof(src)); while ( src != ‘\0’ ) { *dest = *src; src++; dest++; } } 主要: int main () { const char* s = “Hello World”; char* test = ‘d’; my_strcpy( &test, &s ); // Suposed to […]

“strcpy”和“malloc”?

做以下事情是否安全? #include #include #include int main(void) { char* msg; strcpy(msg, “Hello World!!!”); //<——— printf("%s\n", msg); return 0; } 或者应该使用以下内容? char* msg = (char*)malloc(sizeof(char) * 15);

使用strcpy()和复制C中char *的地址之间的区别

我有两个动态分配的数组。 C char **a = (char**)malloc(sizeof(char*) * 5)); char **b = (char**)malloc(sizeof(char*) * 5)); for (int i = 0; i < 7, i++) { a[i] = (char*)malloc(sizeof(char)*7); b[i] = (char*)malloc(sizeof(char)*7); } 如果a[0]是”hello\0″并且我想将a[0]复制到b[0] , strcpy和指针赋值是否相同? 例如: strcpy(b[0], a[0]) b[0] = a[0] 这些都会做同样的事吗?

使用strcpy时访问冲突?

我尝试重新发明strcpy C函数,但是当我尝试运行它时,我收到此错误: Unhandled exception at 0x00411506 in brainf%ck.exe: 0xC0000005: Access violation writing location 0x00415760. 错误发生在*dest = *src; 线。 这是代码: char* strcpy(char* dest, const char* src) { char* dest2 = dest; while (*src) { *dest = *src; src++; dest++; } *dest = ‘\0’; return dest2; } 编辑:哇,那很快。 这是调用代码(strcpy在mystring.c中定义): #include “mystring.h” #include int main() { char* s […]

strcpy周围的分段错误?

我知道你会用指关节敲打我但是。 为什么会出现分段错误 char* cmd; strcpy(cmd, argv[0]); 当这不 char *cmd; cmd = “plop”; 我一段时间没有练习,也不记得为什么。 ps:实际上,我知道在strcpy之前会有更好的东西 char *cmd = (char*) malloc(strlen(argv[0])); 但我只是想知道为什么这个分段错误。 谢谢 !