gpt4 book ai didi

C - sprintf 打印变量名

转载 作者:行者123 更新时间:2023-11-30 21:41:30 26 4
gpt4 key购买 nike

出于某种原因,sprintf 打印了我的 char 数组的名称,我想在其内容中附加一个字符串,从而导致结果无用。它看起来不错,应该可以工作,但事实并非如此。这是我所拥有的:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define STR "ST%d"
#define MAX_MSG 80

char name[MAX_MSG+1] ;


int main(int argc, char **argv) {
printf("Before: %s\n",name); //--debug
sprintf(name,STR,1); //format by 1
printf("After: %s\n",name);
}

这给了我:

Before: name
After: nameST1

从小我就知道这应该给我

Before: 
After: ST1

请帮忙。

最佳答案

您的第一个 printf 调用 Undefined Behavior ,因为您没有初始化缓冲区。

你可以这样做:

chat name[50] = {0};

或者使用memset重置整个数组:

memset (name, 0x00, sizeof(name));

关于第二个printf我想你没有发布你的真实代码。因此将其发布,因为发布的代码无法导致 nameST1 作为第二个 printf

关于C - sprintf 打印变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37610781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com