如何解决将 int 转换为字符串并将其连接到另一个字符串中C 语言
我正在尝试用 C 语言编写代码,将以下一系列数字存储在字符串“0.123456789101112131415...”中。
我试过这个代码:
char num[2000],snum[20];;
num[0] = '0';
num[1] = '.';
for(int i = 1; i < 20; i++) {
sprintf(snum,"%i",i);
strcat(num,snum);
printf("%s\n",num);
}
我包含了以下库:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
当我打印变量“num”时我得到了这个: “0。” + 一些垃圾(有时我得到“0.N”,有时“0.2”,有时“0.R”,等等)。
我做错了什么?
解决方法
正如 David 在评论中指出的那样,strcat
要求两个字符串都以 \0
结尾。
在您的情况下,由 snum
生成的 sprintf
具有 \0
。但是,num
没有。
你可以只做num[2] = '\0'
。或者类似的东西
sprintf(num,"%i%c\0",'.')
希望这能回答您的问题。
,正如 David Ranieri 在评论中所说,您需要一个 NUL 来表示,因此修改代码即可获得所需的结果
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char num[2000],snum[20];;
num[0] = '0';
num[1] = '.';
num[2] = '\0';
for(int i = 1; i < 20; i++) {
sprintf(snum,"%i",i);
strcat(num,snum);
printf("%s\n",num);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。