首页 > 解决方案 > 调试 C 程序时 Visual Studio Code 中的分段错误

问题描述

我正在学习 C。当我在 Linux 上使用这段代码时,我没有遇到这种错误。你能告诉我如何解决它吗?我尝试了很多解决方案,但没有任何效果 T_T。提前致谢。

分割错误

代码

错误2

这是代码

#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);
}

标签: cvisual-studio-codeinitializationscanfc-strings

解决方案


对于初学者来说,这个电话

fflush(stdin);

具有未定义的行为。去掉它。

其次在这个 scanf 的调用中

scanf("%c", &ch);

你应该在转换说明符前面加上一个空格

scanf(" %c", &ch);
      ^^^^^

否则将读取作为换行符 '\n' 的空白字符。

指针str未初始化且具有不确定值

char* str;

所以这个电话

scanf("%s", str);

调用未定义的行为。

您应该声明一个字符数组,例如

char str[100];

并调用函数scanf

scanf("%99s", str);

推荐阅读