【发布时间】:2013-10-18 14:22:28
【问题描述】:
这个问题是在我的 Tally 面试问题中提出的 请帮助我并告诉我下面给出的 C 代码中的错误是什么。 我将不胜感激。
int main()
{
char *p="Tally";
strcpy(p,"piyush");
printf("%s",p);
}
【问题讨论】:
-
另外,与其大量反对和不解释,不如尝试一次将他指向正确的方向。
p不是只读的。它只是不指向可修改的内存位置。为此,您必须将其设置为可修改的位置,例如p = new char[100]或者,与C呆在一起,p = malloc(100)。不过不要忘记错误检查。 -
@AlterMann 请你详细解释一下。我是编程新手
-
很有可能,它不会打印任何东西(也许 SIGSEGV 除外)。
-
@arne
p = malloc(100);是给初学者的一段非常糟糕的代码。这在任何地方都没有意义。正确的做法是写char *p = malloc(sizeof(*p) * strlen("Tally")); strcpy(p, "Tally");。或者,简而言之char *p = strdup("Tally");