简单修改正确代码后输入输出不成功

删掉了原本正确代码中char*c="abcd";的内容而下边加了两行printf 和 scanf 为什么就不行了呢

int MyStrlen(const char*c)
{
    int count = 0;
    while (*c!= 0)
    {
        ++count;
        ++c;
    }
    return count;
}
int main()
{
    char *c;
    printf("Input the string:");
    scanf("%s",&*c);
    printf("The length of the string is %d\n", MyStrlen(c));
    return 0;
}

望采纳

  • char*c="abcd"; 这一行被删掉后,c指针没有指向任何有效的内存空间。当你使用 scanf 函数将字符串输入到 c 中时,实际上是将字符串输入到了一个未知的内存空间中。这可能会导致程序崩溃或产生其他未知的行为。
  • 要正确使用 scanf 函数,需要为 c 分配足够的内存空间。可以使用 malloc 函数或定义一个固定长度的数组来分配内存空间。例如
char c[100];

或者

c = (char*)malloc(100 * sizeof(char));
free(c)

char *c只是声明了个指针变量c,并没有分配内存,输入的内容没地方保存。