【问题标题】:converting a number to string in C [duplicate]在C中将数字转换为字符串[重复]
【发布时间】:2020-04-29 05:28:20
【问题描述】:
int n = 10;
char *s;
while (n > 0) {
  s[strlen(s)] = n % 2 + 48;
  n = n / 2;
}
printf("%s", s);

我尝试将一系列 0 和 1 转换为 string,但是我没有得到预期的输出,尽管这个逻辑是正确的。这里出了什么问题?

【问题讨论】:

  • 你没有为你的字符串分配任何内存!尝试char s[50] = ""; 而不是char *s;(将保留50 个字符)。
  • 你的意思是 char s[50] = "" ;
  • 使用'0'而不是48——这样更清楚。

标签: c string


【解决方案1】:

更好的方法是使用 sprintf() 函数。

#include<stdio.h> 
int main() 
{ 
    char result[50]; 
    int n = 10; 
    sprintf(result, "%d", n); 
    printf("The string for the n is %s\n", result); 
    return(0);
} 

【讨论】:

  • 请注意,问题中的代码实际上是在尝试生成值的二进制表示(例如,1010 表示十进制 10)。不幸的是,sprintf() 没有标准的“二进制格式”转换说明符。
  • @JonathanLeffler 对不起,应该更仔细地阅读
  • 我也是——重复项可能不是“使用二进制表示法将整数转换为字符串”的最佳选择。我正在努力寻找其他问题,以便重复。
  • @JonathanLeffler 我不是在这里对重复项提出异议,但是,刚刚重新审视了这一点,我注意到 OP 的代码 确实 实际上创建了给定的二进制表示n - 只是它倒退!至少我觉得这很有趣。
  • @AdrianMole — 首先生成最低有效位总是最容易的(n % base 为您提供最低有效位)。一种解决方法是在生成数字后反转字符串。另一种方法是在将n % base 添加到输出之前递归n / base(如果它大于零)。 OPs 代码不会终止字符串。该问题也没有显示收到的输出并解释它有什么问题(也没有在输出末尾包含换行符,因为它应该是为了舒适)。
猜你喜欢
  • 2013-10-29
  • 1970-01-01
  • 2015-03-14
  • 2013-07-24
  • 1970-01-01
  • 1970-01-01
  • 2019-10-27
  • 2016-09-06
相关资源
最近更新 更多