gpt4 book ai didi

CodeEval 提交,程序在我的电脑上运行,但在我提交时却不行。 C

转载 作者:太空宇宙 更新时间:2023-11-04 01:29:35 24 4
gpt4 key购买 nike

我正在 CodeEval 上用 C 语言进行 fizz buzz 挑战。它在我的电脑上运行良好,但是当我去 CodeEval 上提交时,我遇到了失败和 0 分。它说我有一个缓冲区溢出错误,但它在我的计算机上运行良好,并且正在生成挑战所要求的准确输出。

/*Program Written and Designed by Ryan Sharpe*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void* printNumbers(int A, int B, int max)
{
char* num = (char*)calloc(2, sizeof(char));
int i = 1;
while(i < max+1)
{
if(i % A == 0 && i % B > 0)
strcpy(num,"F");
else if(i % B == 0 && i % A > 0)
strcpy(num,"B");
else if(i % A == 0 && i % B == 0)
strcpy(num,"FB");
else
strcpy(num,"X");

if(strncmp(num,"X", 2) == 0)
printf("%d%s", i, " ");
else
printf("%s%s", num, " ");
i++;
}
printf("\n");
free(num);
return 0;
}

int main(int argc, char** argv)
{
FILE* f;
f = fopen(argv[1], "r");
int A, B, max;
while(fscanf(f,"%d%d%d", &A, &B, &max) != EOF)
printNumbers(A, B, max);
fclose(f);
return 0;
}

CodeEval 给出的错误是:我没有运行我的程序:

* buffer overflow detected *: /binary terminated ======= Backtrace: ========= /lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x37)[0x7ff699aad807] /lib/x86_64-linux-gnu/libc.so.6(+0x109700)[0x7ff699aac700] /binary[0x4007a0] /binary[0x400857] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed)[0x7ff6999c476d] /binary[0x400639] ======= Memory map: ======== 00400000-00401000 r-xp 00000000 ca:01 1334 /binary 00600000-00601000 r--p 00000000 ca:01 1334 /binary 00601000-00602000 rw-p 00001000 ca:01 1334
/binary 018c3000-018e4000 rw-p 00000000 00:00 0
[heap] 7ff69978d000-7ff6997a2000 r-xp 00000000 ca:01 134950
/lib/x86_64-linux-gnu/libgcc_s.so.1 7ff6997a2000-7ff6999a1000 ---p 00015000 ca:01 134950
/lib/x86_64-linux-gnu/libgcc_s.so.1 7ff6999a1000-7ff6999a2000 r--p 00014000 ca:01 134950
/lib/x86_64-linux-gnu/libgcc_s.so.1 7ff6999a2000-7ff6999a3000 rw-p 00015000 ca:01 134950
/lib/x86_64-linux-gnu/libgcc_s.so.1 7ff6999a3000-7ff699b58000 r-xp 00000000 ca:01 134939
/lib/x86_64-linux-gnu/libc-2.15.so 7ff699b58000-7ff699d57000 ---p 001b5000 ca:01 134939
/lib/x86_64-linux-gnu/libc-2.15.so 7ff699d57000-7ff699d5b000 r--p 001b4000 ca:01 134939
/lib/x86_64-linux-gnu/libc-2.15.so 7ff699d5b000-7ff699d5d000 rw-p 001b8000 ca:01 134939
/lib/x86_64-linux-gnu/libc-2.15.so 7ff699d5d000-7ff699d62000 rw-p 00000000 00:00 0 7ff699d62000-7ff699d84000 r-xp 00000000 ca:01 134929 /lib/x86_64-linux-gnu/ld-2.15.so 7ff699f6c000-7ff699f6f000 rw-p 00000000 00:00 0 7ff699f7f000-7ff699f84000 rw-p 00000000 00:00 0 7ff699f84000-7ff699f85000 r--p 00022000 ca:01 134929
/lib/x86_64-linux-gnu/ld-2.15.so 7ff699f85000-7ff699f87000 rw-p 00023000 ca:01 134929
/lib/x86_64-linux-gnu/ld-2.15.so 7fff5e021000-7fff5e042000 rw-p 00000000 00:00 0 [stack] 7fff5e1ff000-7fff5e200000 r-xp 00000000 00:00 0
[vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0
[vsyscall]

最佳答案

strcpy(num,"FB");

这就是问题所在。早些时候,您只为 num 中的两个字符分配了空间,但是此调用会将 3 个字符写入 num:FB,和一个空终止符。这会产生未定义的行为。

它能在您的计算机上运行这一事实仅表示您很幸运。

关于CodeEval 提交,程序在我的电脑上运行,但在我提交时却不行。 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25089656/

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