2015-04-22 5 views
0

Я попытался закодировать программу litle bruteforce. Но я не могу его скомпилировать. Это очень простой программный код, который я думаю, и это причина, почему его ошибка меня так сильно, что она не скомпилировалась. Я искал решение, но не смог нанести удар золотому дну ...bruteforce-code не работает

`1 #include <stdio.h> 
2 #include <string.h> 
3 char pass; 
4 strcpy(pass,"m"); 
5 int pass_test(int argc, char *argv[]){ 
6   char s_pass[2]; 
7   argv[0] = s_pass; 
8   if (s_pass == pass){ 
9     printf("=================\n==Access gained==\n================="); 
10 }    
11   else{ 
12     printf("sth. went wrong"); 
13 }    
14 } 
15 int main(){ 
16   char solved_pass[2]; 
17   char *OP_ABC; 
18   int i, p, z; 
19   strcpy(OP_ABC, "abcdefghijklmnopqrstuvwxyz"); 
20   if ((strlen(pass)) == 1){ 
21     for(i=0;i < strlen(OP_ABC);i++){ 
22       pass_test(OP_ABC[i]); 
23 }      
24 } 
25   if (strlen(pass) == 2){ 
26     for(p=0;p < strlen(OP_ABC);p++){ 
27       for(z=0;z < strlen(OP_ABC);z++){ 
28         OP_ABC[p] = solved_pass[0]; 
29         OP_ABC[z] = solved_pass[1]; 
30         pass_test(solved_pass); 
31 }        
32 }    
33 } 
34 }` 

это то, что говорит составитель

bruteforce.c:4:13: error: expected ‘)’ before string constant bruteforce.c: In function ‘pass_test’: bruteforce.c:8:13: warning: comparison between pointer and integer [enabled by default] bruteforce.c: In function ‘main’: bruteforce.c:20:2: warning: passing argument 1 of ‘strlen’ makes pointer from integer without a cast [enabled by default] In file included from bruteforce.c:2:0: /usr/include/string.h:399:15: note: expected ‘const char *’ but argument is of type ‘char’ bruteforce.c:22:4: error: too few arguments to function ‘pass_test’ bruteforce.c:5:5: note: declared here bruteforce.c:25:2: warning: passing argument 1 of ‘strlen’ makes pointer from integer without a cast [enabled by default] In file included from bruteforce.c:2:0: /usr/include/string.h:399:15: note: expected ‘const char *’ but argument is of type ‘char’ bruteforce.c:30:5: warning: passing argument 1 of ‘pass_test’ makes integer from pointer without a cast [enabled by default] bruteforce.c:5:5: note: expected ‘int’ but argument is of type ‘char *’ bruteforce.c:30:5: error: too few arguments to function ‘pass_test’ bruteforce.c:5:5: note: declared here

Может кто-нибудь помочь мне, пожалуйста?

+1

При размещении кода, пожалуйста, воздержитесь от добавления строки-номера. Вместо этого отметьте (например, комментарий) строки, которые вызывают проблемы, которые у вас возникают. –

+1

Вы вызываете функцию ('strcpy') в области файлов, и это тоже копирует строку в' char'. Вы должны передать два аргумента 'pass_test', и вы пройдете только один. Вы также скопируете строку в неинициализированный указатель 'char' (' OP_PASS') –

+0

@CoolGuy, почему функция pass_test требует 2 аргумента? –

ответ

1

Проблема 0: Проблема заключается в том, что вы не можете иметь утверждения или свободное выражение в глобальном масштабе.

Другая проблема заключается в том, что функция strcpy ожидает строку (т.е. char*) в качестве пункта назначения, а не одного char.

Вы можете решить обе эти проблемы, выполнив определение и инициализация в одной строке:

char pass = 'm'; 
Смежные вопросы