gpt4 book ai didi

c - 可以溢出的缓冲区的名称是什么 buf、msg、len 或 out

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

我对此很陌生,我似乎无法理解你能帮我识别可能溢出的缓冲区吗?为什么?

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

#define S 100
#define N 1000

int main(int argc, char *argv[]) {
char out[S];
char buf[N];
char msg[] = "Welcome to the argument echoing program\n";
int len = 0;
buf[0] = '\0';
printf(msg);

while (argc) {
sprintf(out, "argument %d is %s\n", argc-1, argv[argc-1]);
argc--;``
strncat(buf,out,sizeof(buf)-len-1);
len = strlen(buf);
}
printf("%s",buf);
return 0;
}

最佳答案

问题出在这里:

sprintf(out, "argument %d is %s\n", argc - 1, argv[argc - 1]);

当您遇到这样的问题时,最好检查一下代码注释行,直到程序停止崩溃。然后你就会知道错误在哪里:D

关于c - 可以溢出的缓冲区的名称是什么 buf、msg、len 或 out,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26584087/

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