调试 C 程序时 Visual Studio 代码中的分段错误
Segmentation Fault in Visual Studio Code while debug C Program
我正在学习 C。当我在 Linux 上使用这段代码时,我没有遇到这种错误。你能告诉我如何解决它吗?我尝试了很多解决方案,但没有任何效果 T_T。提前致谢。
error2
这是代码
#include <conio.h>
#include <stdio.h>
void main()
{
int a;
float x;
char ch;
char* str;
printf("Enter integer number: ");
scanf("%d", &a);
printf("\nEnter real number : ");
scanf("%f", &x);
printf("\nEnter a character: ");
fflush(stdin);
scanf("%c", &ch);
printf("\nEnter a string: ");
fflush(stdin);
scanf("%s", str);
printf("\nData:");
printf("\n Integer: %d", a);
printf("\n Real: %.2f", x);
printf("\n Character: %c", ch);
printf("\n String: %s\n", str);
}
裸 char *str;
不指向任何有效内存,因此您不能 scanf()
将字符串放入其中。
要么在堆栈上分配一些内存,例如char str[512];
,或动态与 malloc()
和朋友。
对于初学者来说,这个电话
fflush(stdin);
有未定义的行为。删除它。
第二次在scanf的调用中
scanf("%c", &ch);
您应该在转换说明符前加上 space
scanf(" %c", &ch);
^^^^^
否则将读取白色 space 个字符作为换行符 '\n'。
指针str
未初始化且具有不确定的值
char* str;
所以这个电话
scanf("%s", str);
调用未定义的行为。
您应该声明一个字符数组,例如
char str[100];
并像
一样调用函数scanf
scanf("%99s", str);
我正在学习 C。当我在 Linux 上使用这段代码时,我没有遇到这种错误。你能告诉我如何解决它吗?我尝试了很多解决方案,但没有任何效果 T_T。提前致谢。
error2
这是代码
#include <conio.h>
#include <stdio.h>
void main()
{
int a;
float x;
char ch;
char* str;
printf("Enter integer number: ");
scanf("%d", &a);
printf("\nEnter real number : ");
scanf("%f", &x);
printf("\nEnter a character: ");
fflush(stdin);
scanf("%c", &ch);
printf("\nEnter a string: ");
fflush(stdin);
scanf("%s", str);
printf("\nData:");
printf("\n Integer: %d", a);
printf("\n Real: %.2f", x);
printf("\n Character: %c", ch);
printf("\n String: %s\n", str);
}
裸 char *str;
不指向任何有效内存,因此您不能 scanf()
将字符串放入其中。
要么在堆栈上分配一些内存,例如char str[512];
,或动态与 malloc()
和朋友。
对于初学者来说,这个电话
fflush(stdin);
有未定义的行为。删除它。
第二次在scanf的调用中
scanf("%c", &ch);
您应该在转换说明符前加上 space
scanf(" %c", &ch);
^^^^^
否则将读取白色 space 个字符作为换行符 '\n'。
指针str
未初始化且具有不确定的值
char* str;
所以这个电话
scanf("%s", str);
调用未定义的行为。
您应该声明一个字符数组,例如
char str[100];
并像
一样调用函数scanfscanf("%99s", str);