2010-03-21 100 views
1

我想获得更多的熟练和我的C编程,我试图测试显示输入流中的字符,而在获取该字符的循环内。我正在使用getchar方法。为什么在Visual Studio C编译器中引发此异常?

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

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

这是代码...任何想法?谢谢。

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

尝试改变:

printf('%s', c); 

printf("%c", c); 

如果您希望在最后,你需要循环的打印整个字符串以结束它字符为:

s[i] = 0; 

,然后你可以打印为:

printf("%s", s); 
+0

谢谢!很棒。 – 2010-03-21 04:27:12

1

,你应该检查的第一件事是:你分配给S []或不是记忆。
第二:printf(“%c”,c); //我可以假设%s - 正在等待以null结尾的字符串。
第三:在printf()中可能存在“”vs“”的问题。

+0

谢谢您的意见。 – 2010-03-21 04:28:11

相关问题