为什么在Visual Studio C编译器中抛出这个异常?
我正在尝试更加熟练地使用我的 C 编程,并且我正在尝试测试在获取字符的循环内部显示输入流中的字符。我正在使用 getchar
方法。
当我的代码中存在 printf
语句时,我收到抛出异常。 (如果我注释掉该函数中的 printf
行,则不会引发异常)。
异常:未处理的异常 0x611c91ad (msvcr90d.dll) 在 firstOS.exe: 0xC0000005: 访问 违规读取位置 0x00002573。
这是代码...有什么想法吗?谢谢。
附言。我正在使用 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);
}
}
I am trying to get more adept and my C programming and I was attempting to test out displaying a character from the input stream while inside of the loop that is getting the character. I am using the getchar
method.
I am getting an exception thrown at the time that the printf
statement in my code is present. (If I comment out the printf
line in this function, the exception is not thrown).
Exception: Unhandled exception at
0x611c91ad (msvcr90d.dll) in
firstOS.exe: 0xC0000005: Access
violation reading location 0x00002573.
Here is the code... Any thoughts? Thank you.
PS. I am using the stdio.h
library.
/*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);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试更改:
to
如果您希望在循环的 end 处打印整个字符串,则需要使用
NULL
字符终止它,如下所示:然后你可以将其打印为:
Try changing:
to
If you wish to print the entire string at the end of the loop you need to terminate it with a
NULL
char as:and then you can print it as:
您应该检查的第一件事是:您是否为 s[] 分配了内存。
第二: printf("%c", c); // 我可以假设 %s - 正在等待以 null 结尾的字符串。
第三:printf() 中的“”与“”可能有问题。
First thing that you should check is: are you allocated memory for s[] or not.
Second: printf("%c", c); // I can suppose that %s - is waiting for null terminated string.
Third: maybe problem with "" vs '' in printf().