我是Tver的新编程和iam。 程序中存在问题。我不知道在哪里。我正在使用输入文件和输出文件。所以,我试图调试程序,但我失败了 我正在使用Visual Studio 2010。 提前谢谢。
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <string.h>
using namespace std;
int num[100];
void outc(int s, int ss)
{int i,temp,numb[100],k,l,t;
temp=s; i=0;
while (temp>0)
{
numb[i]=temp%ss;
if (numb[i]>=10) numb[i]='A'-10+temp%16;
temp/=ss;
i++;}
l=i/2; t=0;
i--;
while (i>=l)
{
k=numb[t];
numb[t]=numb[i];
numb[i]=k;
t++;
i--;
}
FILE* fooo;
errno_t errorCodes=fopen_s(&fooo,"output.txt","w");
fprintf(fooo,"s%d= %d\n", ss, numb);
return;
}
int main()
{char c,strbuf[100],num[100];
char *res;
int k,s,i,temp,ost,s2,s8,s10,s16;
FILE* foo;
errno_t errorCode=fopen_s(&foo,"input.txt","r");
fgets(strbuf,1000,foo);
if(strbuf[strlen(strbuf)-1]=='b')
{
strncpy_s(strbuf, strbuf, strlen(strbuf)-1);
c=atoi(strbuf);
k=0;s=0;
while(c!=0)
s+=(c%10)*pow(2,k);
c/=10;
k++;
} else
if(strbuf[0]==0 && strbuf[1]!='x')
{i=0;;
do{
strbuf[i]=strbuf[i+1];
i++;
}while(i!=strlen(strbuf)-1);
c=atoi(strbuf);
k=0;s=0;
while(c!=0)
s+=(c%10)*pow(8,k);
c/=10;
k++;
} else
if(strbuf[0]=='0' && strbuf[1]=='x')
{i=0;k=strlen(strbuf);
do{
strbuf[i]=strbuf[i+2];
i++;
}while(i!=k);
puts(strbuf);
k=0;s=0;
for (i=strlen(strbuf)-1;i>=0; i--)
{
if (strbuf[i]>='A' && strbuf[i]<='F')
c=10+strbuf[i]-'A'; else c=strbuf[i]-'0';
printf("%d\n",c);
s+=c*pow(16,k);
k++;
}
} else s=atoi(strbuf);
printf("%d\n",s);
outc(s,2);
outc(s,8);
FILE* fooo;
errno_t errorCodep=fopen_s(&fooo,"output.txt","w");
fprintf(fooo,"s10= %d\n", s);
outc(s,16);
//if (temp%16>=10) num[len-1]='A'-10+temp%16;
//printf("s2= %d\ns8= %d\ns10= %d\ns16= %d\n", s2, s8, s, s16);
_getch();
return 0;
}
答案 0 :(得分:1)
这有很多问题:
您不能在C程序中#include <iostream>
或using namespace std
。
这里有很多编译器特定的东西,大多数人都很难帮助你。你可以用标准的C编写,让你的生活变得更轻松。例如,我无法编译这个程序来检查它有什么问题。
当您使用k
,s
和s2
等变量名称时,您的代码很难理解,并执行{{1然后是FILE * foo
。您的代码也只是格式可怕。
使用FILE * fooo
,除非Microsoft正在做一些非常奇怪的事情,在这里,您不能指定与源和目标相同的字符串。
strncpy_s(strbuf, strbuf, ...)
比strtol()
更好。
您没有关闭任何打开的文件,也不会检查它们是否确实打开了。在这里使用atoi()
运算符:&
非常可疑,但您再次使用某些非标准函数,所以谁知道。
此处:errorCode=fopen_s(&foo, ...
您告诉fprintf(fooo,"s%d= %d\n", ss, numb)
期待两个fprintf()
,但最后一个参数是一个数组。