c - 我已经编写了这段代码,但它无法正常工作

标签 c string dynamic-memory-allocation

我正在编写一个代码,它接受用户想要的长度的字符串并显示它。所以这就是我写的

#include<stdio.h>
#include<stdlib.h>
void main()
{
  char *a;
  int i,n;
  a=(char*)calloc(1,sizeof(char));
  printf("enter the string\t");
  for(i=0;a[i]!=0;i++)
  {
        scanf("%[^0]c",&a[i]);
        n=2+i;
        a=(char*)realloc(a,(n)*sizeof(char));
  }
  for(i=0;a[i]!=0;i++)
  {
        printf("%c",a[i]);
  }
  free(a);
  a=NULL;
}

但它没有进入循环并接受任何输入。你能告诉我出了什么问题吗?谢谢

最佳答案

您没有进入循环,因为您使用 calloc 分配了 a,因此 a[0] 为 0。它将导致初始失败a[i]!=0 测试两个 for 循环。

关于c - 我已经编写了这段代码,但它无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47893315/

相关文章:

c - 如何在 x86 DOS 程序集中读取没有 "consuming"的键盘输入?

php - 在 PHP 或 mySQL 中减去两个字符串以计算差异

c++ - 为多维数组创建内存空间

c - qsort如何修改指向字符串的指针?

java - 跨编程语言和机器序列化数字的库

c# - 空用户输入异常c#

python - 如何检查一个字符串是否以另一个字符串结尾,或者相反?

c++ - 包含字符串值的结构在使用动态内存分配创建后在分配时导致段错误

java - java中数组的内存是分配在栈上还是堆上?

c++ - 使用clock_gettime在arduino中进行纳秒测量