为什么在Visual Studio C编译器中抛出这个异常?

发布于 2024-08-25 17:59:48 字数 668 浏览 5 评论 0原文

我正在尝试更加熟练地使用我的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爱给你人给你 2024-09-01 17:59:48

尝试更改:

printf('%s', c);

to

printf("%c", c);

如果您希望在循环的 end 处打印整个字符串,则需要使用 NULL 字符终止它,如下所示:

s[i] = 0;

然后你可以将其打印为:

printf("%s", s);

Try changing:

printf('%s', c);

to

printf("%c", c);

If you wish to print the entire string at the end of the loop you need to terminate it with a NULL char as:

s[i] = 0;

and then you can print it as:

printf("%s", s);
拥抱没勇气 2024-09-01 17:59:48

您应该检查的第一件事是:您是否为 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().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文