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