将 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”,等等)。

我做错了什么?

rczqy 回答:将 int 转换为字符串并将其连接到另一个字符串中(C 语言)

正如 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);
    }
}

enter image description here

本文链接:https://www.f2er.com/1122456.html

大家都在问