gpt4 book ai didi

c - 为什么这段代码与 bin 一起使用时会崩溃?

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

正如标题所示,我不知道我的二进制错误在哪里。

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

char binary[360];

void printstringasbinary(char* s)
{
// A small 9 characters buffer we use to perform the conversion
char output[9];

while (*s)
{
// Convert the first character of the string to binary using itoa.
// Characters in c are just 8 bit integers, at least, in noawdays computers.

itoa(*s, output, 2);

strcat(binary, output);

++s;
}

}

int main(int argc, char *argv[])
{

int i, n;

//printf("argc: %i\n", argc);
if (argc != 3)
{
puts("Converter [Text] [hex|dec|bin]");
return 0;
}
FILE *f = fopen("Output.txt", "a");
for (i = 0; i < strlen(argv[0]); i++)
{
if (strcmp(argv[2], "hex") == 0)
fprintf(f, "%X ", (unsigned int) argv[1][i]);
else if (strcmp(argv[2], "dec") == 0)
fprintf(f, "%i ", (unsigned int) argv[1][i]);
else if (strcmp(argv[2], "bin") == 0)
for (n = 0; n < strlen(argv[1]); n++)
{
printstringasbinary(argv[1][i]);
}
fprintf(f, "%s ", binary);

}
fclose(f);

return 0;
}

最佳答案

您可以循环访问 argv[1][i] 的字符,而 i 最多可以采用 argv[0] 字符串长度的值。根据 argv[0] 是否比 argv[1]“长”,这可能会导致段错误。您的意思是 printstringasbinary(argv[1][n]) 而不是 printstringasbinary(argv[1][i]) 吗?顺便说一句:为什么 - 正如 LP 所指出的 - 你到底要迭代 argv[1] 吗?

for (i = 0; i < strlen(argv[0]); i++)
....

for (n = 0; n < strlen(argv[1]); n++)
{
printstringasbinary(argv[1][n]);
}

关于c - 为什么这段代码与 bin 一起使用时会崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42083674/

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