2015-03-09 2 views
-3
#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, он перестает работать.CodeBlocks exe перестает работать

ответ

1

Есть две проблемы с этим зсапЕ:

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); 
+0

большое спасибо –

1

Задача 1. определение string как char не будет работать для вас. вам нужен массив.

определяет char string[100] = {0};

Проблемы 2.scanf("%s",&string); не требуется, может быть использован в качестве scanf("%s",string);

проблем 3.if(string == 'h'), неправильно. содержимое массива нельзя сравнивать с помощью оператора ==. вы должны использовать функцию strcmp().

+0

Keeping 'string' как тип' char' не будет работать - ОП хочет использовать его для хранения например, строка «Блокнот». –

+0

@ DanielKleinstein Спасибо. Я просто перестала смотреть на первый неправильный экземпляр. –

Смежные вопросы