#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
之后运行它时,它会停止工作。
答案 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);
string
是一个字符 - scanf
会导致缓冲区溢出。
%s
格式说明符只会读到下一个空格。
要解决此问题,您应该分配更大的缓冲区并读取整行:
char buffer[1024];
printf("What would you like to search\n");
fgets(buffer, sizeof buffer, stdin);
system(buffer);