Tag: strcpy

strcpy()中的分段错误

我有这样的基本结构 typedef struct struck { char* id; char* mat; int value; char* place; } *Truck; 像这样的function创建了该结构的新“实例”: Truck CTruck(char* id, char* mat, int value, char* place) { Truck nT = (Truck) malloc(sizeof (Truck)); nT->value = value; strcpy(nT->id, id); strcpy(nT->mat, mat); strcpy(nT->place, place); return nT; } 我在第一个strcpy遇到错误。 它编译没有问题。

strcpy()返回值

标准C库中的许多函数,尤其是用于字符串操作的函数,最着名的是strcpy(),共享以下原型: char *the_function (char *destination, …) 这些函数的返回值实际上与提供的destination相同。 为什么你会浪费多余的回报价值? 这样的函数无效或返回有用的东西更有意义。 我唯一的猜测是,为什么将函数调用嵌套在另一个表达式中更容易,更方便,例如: printf(“%s\n”, strcpy(dst, src)); 还有其他合理的理由certificate这个成语是正确的吗?

C – 为什么strcpy()是必需的

有人可以向我解释为什么strcpy()是必须将字符串分配给字符数组,例如在下面的代码片段中。 int main(void) { char s[4]; s = “abc”; //Fails strcpy(s, “abc”); //Succeeds return 0; } s = “abc”失败的原因是什么? 为什么strcpy()是在声明字符串之后将字符串赋值给char数组的唯一方法? 我似乎很奇怪你必须使用一个函数来执行一个基本的赋值。

为什么故意不正确地使用strcpy不会失败呢?

为什么使用strcpy的下面的C代码对我来说效果很好? 我尝试以两种方式使其失败: 1)我尝试从字符串文字strcpy到分配的内存太小,不能包含它。 它复制了整个事情并没有抱怨。 2)我从一个非NUL -terminated的数组中尝试了strcpy 。 strcpy和printf工作得很好。 我曾经以为strcpy复制了char直到找到NUL ,但没有一个存在且仍然停止。 为什么不这些失败? 我是以某种方式获得“幸运”,还是我误解了这个function是如何工作的? 它是特定于我的平台(OS X Lion),还是大多数现代平台以这种方式工作? #include #include #include int main() { char *src1 = “123456789”; char *dst1 = (char *)malloc( 5 ); char src2[5] = {‘h’,’e’,’l’,’l’,’o’}; char *dst2 = (char *)malloc( 6 ); printf(“src1: %s\n”, src1); strcpy(dst1, src1); printf(“dst1: %s\n”, dst1); strcpy(dst2, src2); printf(“src2: %s\n”, […]