Случай 1: Когда я беру строку ввода, она успешно дает выход, написав этот кусок кода:Неожиданный выход Printf для строки в C
#include <stdio.h>
int main()
{
char *str;
scanf("%s",&str);
printf("%s",&str);
return 0;
}
Случай 2: С другой стороны, он выдает ошибки Runtime для этого фрагмента:
#include <stdio.h>
int main()
{
char *str;
scanf("%s",&str);
printf("%s",str);
return 0;
}
Я нашел эту вещь своеобразно, и вы хотите знать, почему это происходит ... Спасибо заранее.
Читайте о ** строки **, ** указатели **, ** массивы ** и ** динамическое распределение памяти ** вместе с ** спецификацией формата **. Добавьте вишню на торт, прочитав о * неопределенном поведении *. – haccks
Что-то здесь не хватает памяти, а это 'str'. –
Помимо того факта, что вы не выделяли память для 'str', случай 2 является правильной реализацией. Добавьте 'str = malloc (50);' или подобное перед использованием. В случае 1 вам повезет, и вы просто взрываете какую-то память, которая не принадлежит вам. – eddiem