Почему этот код не работает?Удалить последний символ строки
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
// local declarations
int len;
char* pStr;
// statements
printf(" how many characters you want to enter?\n");
scanf("%d", &len);
pStr=(char*)calloc(len+1,sizeof(char));
printf("\n enter your string: ");
gets(pStr);
*(pStr+len)='\0';
printf("\n your string: ");
puts(pStr);
printf(" oops! last character deleted.");
getch();
return 0;
}
хотя он работает правильно, когда я использую Scanf функцию, чтобы прочитать строку, но , почему он не с получает?
* (pStr + len) -> * (pStr + len * sizeof (char)) – Gar
Не смешивайте использование scanf с get. [проверить этот ответ SO] (http://stackoverflow.com/questions/22226529/program-doesnt-execute-gets-after-scanf-even-using-fflushstdin) –
Задавать пользователю, как долго будет вводиться ввод, является сомнительным стремиться. * Доверяя, что вход пользователя в соответствие является глупым. @ K.Gkinis: Не используйте 'gets()', period. Он удален из С по уважительной причине. – EOF