繁体   English   中英

为什么在Visual Studio C编译器中引发此异常?

[英]Why is this exception thrown in the visual studio C compiler?

我正在尝试使自己的C语言编程更加熟练,并且试图在获取字符的循环内部测试从输入流显示字符的过程。 我正在使用getchar方法。

我的代码中存在printf语句时,我抛出异常。 (如果我在此函数中注释了printf行,则不会引发异常)。

异常:firstOS.exe中的0x611c91ad(msvcr90d.dll)未处理的异常:0xC0000005:访问冲突读取位置0x00002573。

这是代码...有什么想法吗? 谢谢。

PS。 我正在使用stdio.h库。

/*getCommandPromptNew - obtains a string command prompt.*/
void getCommandPromptNew(char s[], int lim){    

    int i, c;

    for(i=0; i < lim-1 && (c=getchar())!=EOF && c!='\n'; ++i){
        s[i] = c;
        printf('%s', c);
    }

}

尝试更改:

printf('%s', c);

printf("%c", c);

如果希望在循环结束时打印整个字符串,则需要使用NULL char终止它,如下所示:

s[i] = 0;

然后可以将其打印为:

printf("%s", s);

您应该检查的第一件事是:是否为s []分配了内存。
第二个:printf(“%c”,c); //我可以假设%s-正在等待以null结尾的字符串。
第三:也许printf()中的“” vs“存在问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM