CodeBlocks exe 停止工作

CodeBlocks exe stops working

#include <stdio.h>
#include <stdlib.h>
#include<string.h>
int main()
{
    char string;
    printf("Hello\n");
    printf("What would you like to do\n");
    printf("Here are the options\n");
    printf("s : How are you\n");
    printf("c : What would you like to search\n");
    scanf("%s",&string);
    if(string == 'h')
        printf("iam fine\n");

    else if (string == 's')
        printf("What would you like to search\n");
    scanf("%s",&string);
    system(string);
    return 0;
}

当我 运行 它说你想搜索什么后我输入 run notepad 它停止工作。

问题 1.string 定义为 char 对您不起作用。你需要一个数组。

定义char string[100] = {0};

问题2. scanf("%s",&string);不需要,可以作为scanf("%s",string);

问题3.if(string == 'h'),错误。无法使用 == 运算符比较数组内容。你必须使用 strcmp() 函数。

这个scanf有两个问题:

printf("What would you like to search\n");
scanf("%s",&string);
system(string);
  1. string 是单个字符 - scanf 将导致缓冲区溢出。

  2. %s 格式说明符只读到下一个空格。

要解决此问题,您应该分配更大的缓冲区并读取整行:

char buffer[1024];
printf("What would you like to search\n");
fgets(buffer, sizeof buffer, stdin);
system(buffer);