2014-02-09 3 views
-5

, когда я пытаюсь скомпилировать данный код в кодовых блоках. его дает мне ошибку компиляции ожидается (до текста в подписи методы Encrypt Может кто-нибудь сказать мне, почему он делает такОшибка компиляции в C

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 


void encrypt(string text , int key) 
{ 

    for(int i = 0, n = strlen(text); i < n ; i ++) 
    { 
    if((text[i] >= 'A' && text[i] <='Z') || (text[i] >= 'a' && text[i] <='z')) 

      printf("%c", (text[i] + (key % 26))); 
    else 

      printf("%c",text[i]); 
} 

} 


int main() 
{ 
printf("Enter any String: \n"); 
string text; 
scanf("%s", &text); 
int x; 
printf("Enter Key: \n",&x); 
encrypt(text,x); 

return 0; 
} 
+7

'string' - это не вещь в C ... –

+0

@OliCharlesworth Я включил библиотеку строк до мой код. то почему он дал мне ошибку? –

+1

Потому что 'string' не вещь в C. См., Например, http://en.cppreference.com/w/c/string/byte для содержимого заголовка ''. –

ответ

1

использование:.?

char text[100]; 
scanf("%s", text); 

100 является максимальной длиной string, поэтому пользователь должен вставить не более 99 символов в этом случае (последний используется для терминатора строк).

+4

«поэтому пользователь не может вставить более 99 символов» - он, безусловно, может, а затем он потерпит неудачу, что приведет к переполнению буфера и неопределенному поведению. 'scanf()' не должен использоваться вообще. Вместо этого используйте 'fgets()'. –

+0

У меня есть ваше мнение. Спасибо –

+0

@ H2CO3 да, вы правы. Я переписал свой ответ – drolando

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