2010-03-21 3 views
1

Я пытаюсь получить более искусное и мое программирование на С, и я пытался проверить отображение символа из входного потока, находясь внутри цикла, который получает символ. Я использую метод getchar.Почему это исключение выбрасывается в Visual Studio C компилятор?

Я получаю исключение, возникшее в то время, когда в моем коде присутствует оператор printf. (Если я прокомментирую строку printf в этой функции, исключение не будет выбрано).

Исключение: Необработанное исключение при 0x611c91ad (msvcr90d.dll) в firstOS.exe: 0xC0000005: Access нарушения чтения расположения 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

Try изменения:

printf('%s', c); 

в

printf("%c", c); 

Если вы хотите, чтобы напечатать всю строку в конце петли вам нужно завершить его с помощью NULL символ как:

s[i] = 0; 

, а затем вы можете распечатать его, как:

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

спасибо! Прекрасно работает. –

1

Первое, что вы должны проверить это: вы выделили память для с [] или нет.
Второй: printf ("% c", c); // Я могу предположить, что% s - ожидает строку с нулевым завершением.
В-третьих: может быть проблема с "" vs '' в printf().

+0

Благодарим вас за ввод. –

Смежные вопросы