1

我正在尝试变得更熟练和我的 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);
    }

}

4

2 回答 2

4

尝试改变:

printf('%s', c);

printf("%c", c);

如果你想在循环结束时打印整个字符串,你需要用一个NULLchar 来终止它:

s[i] = 0;

然后您可以将其打印为:

printf("%s", s);
于 2010-03-21T04:20:22.017 回答
1

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

于 2010-03-21T04:24:35.813 回答