c - VS 2010 中的调试断言 fprintf 失败

标签 c visual-studio-2010 input

我是编程新手,来自特维尔。 程序有问题。我不知道在哪里。我正在使用输入文件和输出文件。所以,我尝试调试程序,但我失败了 我正在使用 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;
}

最佳答案

这有很多问题:

  1. 你不能#include <iostream>或者有 using namespace std在 C 程序中。

  2. 这里有太多编译器特定的东西,大多数人很难帮助你。使用标准 C 语言编写会让您的生活轻松很多。例如,我没有办法编译这个程序来检查它有什么问题。

  3. 当您使用像 k 这样的变量名时,您的代码很难理解。 , 和 s , 和 s2 , 之类的,然后做类似 FILE * foo 的事情其次是 FILE * fooo .您的代码的格式也很糟糕。

  4. strncpy_s(strbuf, strbuf, ...)除非 Microsoft 正在做一些非常奇怪的事情,否则在这里,您不能将相同的字符串指定为源和目标。

  5. strtol()这里比 atoi() 好.

  6. 您没有关闭任何打开的文件,也没有检查它们是否确实打开了。使用 &这里的接线员:errorCode=fopen_s(&foo, ...非常可疑,但同样,您使用了一些非标准函数,所以谁知道呢。

  7. 此处:fprintf(fooo,"s%d= %d\n", ss, numb)你告诉fprintf()期待两个int s,但最后一个参数是一个数组。

关于c - VS 2010 中的调试断言 fprintf 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18947406/

相关文章:

c - 想要在服务器上接收客户端发送的消息包......用C语言

C 服务器和客户端 - 段错误并显示垃圾

visual-studio-2010 - SlowCheetah 在构建后事件后执行

c++ - 在 C++ 中将格式化的数值数据读取到数组

javascript - 尝试使用普通 addEventListener 单独定位多个 Switch 组件,但只命中第一个 - 我没有正确使用 'this'

c - 替换嵌套 for 循环的宏

c - fopen 无法读取文件(文件始终等于 NULL)

.net - 停止 .NET Firebird (2.6.5) 提供程序将所有 SQL 写入控制台

C++将值添加到一种矩阵

ajax - 如何将参数传递给 f :ajax in h:inputText? f:param 不起作用