【问题标题】:Convert int to string and concatenate it in another string (C language)将 int 转换为字符串并将其连接到另一个字符串中(C 语言)
【发布时间】:2021-04-16 03:01:17
【问题描述】:

我正在尝试用 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”,等等)。

我做错了什么?

【问题讨论】:

    标签: c strcat


    【解决方案1】:

    正如大卫在 cmets 中指出的那样,strcat 要求两个字符串都以 \0 结尾。

    在您的情况下,由sprintf 生成的snum 具有\0。但是,num 没有。

    你可以做num[2] = '\0'。或者类似的东西

    sprintf(num, "%i%c\0", 0, '.')
    

    希望这能回答你的问题。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多