CodeBlocks exe停止工作

时间:2015-03-09 14:07:04

标签: c arrays char strcmp

#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之后运行它时,它会停止工作。

2 个答案:

答案 0 :(得分:1)

问题1。string定义为char将不适合您。你需要一个数组。

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

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

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

答案 1 :(得分:1)

此scanf存在两个问题:

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

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

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

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