c - 如何在C中打印出字符串的单个字符

标签 c string loops printf

我在这里有点困惑

char *string;

scanf("%s",string); 

int i=strlen(string);
int k = 0;

while(k<i){    
      printf("%c", string[k]);
      k++;    
  }

当我编译它时,它什么也没有打印出来。

最佳答案

scanf("%s",string); 

string 是一个指针。您需要为其分配内存,以便它可以保存使用 scanf 读取的输入。

char *string;

这个语句只是创建一个指向字符数组的指针,但没有分配内存来保存数组。
您需要使用动态分配显式分配内存。您可以使用 malloc 之类的函数。阅读 this

或者你可以声明一个数组而不是指针,

char string[SIZE];

SIZE 是字符串的最大可能大小。
你甚至可以使用 getline而不是 scanf,因为如果传递 NULL 指针,getline 会分配内存。

关于c - 如何在C中打印出字符串的单个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23211067/

相关文章:

c - 使用 MSP430 的 RNG/PRNG

c - 如何将与 OpenGL 一起使用的纹理嵌入到 C 数组中?

javascript - 难以创建 Jquery 循环以重复更改背景颜色和动画元素

java - 程序不会在 while 循环中进入 try block

c - 在 C 中构建 memcmp 函数

c - 我的变量范围有什么问题?

JavaScript 正则表达式匹配句子中的单词

c - C 中反转二维字符串集的函数不会反转超过第一个和最后一个字符

python - 如何将 lambda 函数读取为字符串?

java - 仅使用 Java 中的循环和 if 语句查找 1-1000 之间的完美数字