Elg*_*non -2 c arrays printf char
我正在将数字从10个计数系统(cs)转换为另一个,并将其打印到文件中。
void Fileoutkey(char *res1, char *res2, int sys1, int sys2) //KANON
{
FILE *fp;
if(fp = fopen("task_out.cpp", "w"))
{
fprintf(fp, "%d: %s\n", sys1, res1);
fprintf(fp, "%d: %s\n", sys2, res2);
fclose(fp);
}
else
{
printf("No such file in directory.\n");
exit(1);
}
}
Run Code Online (Sandbox Code Playgroud)
转换功能(可以)
int numSystem1 = 12;
char digits1 [13] = "0123456789AB";
char result1 [18] = "";
int digCount1 = 0;
while (num)
{
int rem1 = num % numSystem1;
result1 [digCount1] = digits1[rem1];
num /= numSystem1;
digCount1++;
for (int i = digCount1; i >= 0; i--)
{
cout << result1[i]; //here i get 10
}
}
Run Code Online (Sandbox Code Playgroud)
当从10转换为12 cs(例如number)时12,10我得到的不是01。控制台中的输出正确。
转换代码绝对不起作用。以将12从10转换为12的示例为例,循环执行以下操作:
第一次num是12。12 % 12是0-因此存储为字符串的第一个字符。num然后被12除以成为1。
第二次1 % 12为1,并将其添加为第二个字符。这意味着您的字符串现在包含“ 01”。这就是您在输出中看到的-代码正在以相反的顺序添加数字。
您可以算出数字的大小,然后从该数字开始倒数以在另一个方向添加字符,或者使用反转字符串。
同样在循环之后,您需要添加NUL终止符,如下所示:
result1 [digCount1] = '\0';
Run Code Online (Sandbox Code Playgroud)