【问题标题】:How to print out individual characters of a string in C如何在C中打印出字符串的单个字符
【发布时间】:2014-04-22 05:27:35
【问题描述】:

我在这里有点困惑

char *string;

scanf("%s",string); 

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

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

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

【问题讨论】:

  • 得到printed
  • 你还需要在最后打印一个\n,或者fflush(stdout)。默认情况下,标准输出是行缓冲的。

标签: c string loops printf


【解决方案1】:
scanf("%s",string); 

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

char *string;

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

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

char string[SIZE];

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

【讨论】:

  • 所以我需要使用 malloc 而不是 scanf 中的字符串?即 scanf("%s", string=malloc((strlen)*sizeof(char)))?
  • @yukapuka 在读取之前您不会知道字符串的大小,因此您需要读取数字然后分配或声明一个 char 数组。
  • @yukapuka 如果可以使用 getline,您可以使用它。因为它会分配内存。
  • 如何读取号码?是我读入字符串 [SIZE] 然后找到它的长度 strlen(string) 的唯一选择
  • @yukapuka 您需要先向用户询问字符串的长度,然后再读取字符串。或者您可以逐个字符地读取字符串并使用realloc为一个字符分配内存,然后将其存储并在循环中重复此操作。所以如果能用getline就直接用吧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 2012-04-14
  • 1970-01-01
  • 1970-01-01
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多