2016-12-29 5 views
0
#include <stdio.h> 
#include <stdlib.h> 
#include <ctype.h> 
#include <string.h> 
#include <math.h> 
int main() 
{ 
char password[10]; 
int i; 
int contor=0; 
printf("introdu parola "); 
scanf("%c",&password); 
for(i=0;i>=10;i++) 
{ 
    if (isalpha(password[1])) contor=1; 


} 
if(contor=1) {printf("good pass");} 
    else {printf("bad pass");} 
return 0; 
} 

У меня есть эта часть кода.Определенное положение в строке

Я хочу, если я типа

22s33

для печати

хороший проход

еще

плохой пас

Как я могу проверить определенную позицию в char массиве? Вышеприведенный метод, похоже, не работает. Может кто-нибудь объяснить мне, почему моя логика неверна? // Edit: I`ve исправлено it.Seems работать well.Thanks ребята

+0

@ crt01 ___Please не редактируйте вопрос, чтобы добавить answer___. Вы можете либо добавить свой собственный ответ, либо [принять уже существующий] (http://meta.stackexchange.com/q/5234/244062), если это было полезно. :) –

ответ

4

У вас есть несколько проблем, некоторые из них являются очень основными понятиями. Предложите перечитать книгу C.

Чтобы обеспечить некоторые подсказки,

  1. scanf("%c",&password); должен быть scanf("%9s",&password);

    Детали:%c считывает и сохраняет один char, для строки, вам нужно %s. Значение 9 означает максимальную ширину поля, чтобы избежать переполнения буфера более длинным, чем ожидалось.

  2. for(i=0;i>=10;i++) должно быть for(i=0; i<10; i++) и, не требуется вообще.

    Подробнее: Проверьте значение i с помощью отладчика и пошаговое выполнение. Более того, если вы ищете конкретный индекс, зачем вообще цитировать?

  3. if(contor=1) должен быть if(contor == 1)

    Детали:= является оператор присваивания, в то время, что вам нужно, является сравнение, оператор ==.

т.д.


EDIT: Обновление с помощью OP,

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

int main() { 

char password[10]; 
int i; 
int contor=0; 

printf("introdu parola "); 
scanf("%s",&password); 

for(i=0;i<10;i++) { 
    if (isalpha(password[1])) contor=1; 
} 

if(contor==1) { 
    printf("good pass"); 
} 
else { 
    printf("bad pass"); 
} 

return 0; 
} 

Комментарии: Это лучше, но все еще нуждается в улучшении.

  • scanf("%s",&password); должны быть лучше scanf("%9s",password);
  • for(i=0;i<10;i++) { if (isalpha(password[1])) contor=1; } не имеет смысла, вы никогда не использовали i по значению в цикле. В случае, если вы хотите проверить, для второго (или третий?) элемент только, вы можете пропустить цикл и писать непосредственно

    if (isalpha(password[1]) { 
        /*print good password*/ 
    } 
    else { 
        /* print bad password*/ 
    } 
    
+1

Приятно, что вы предоставили намеки и не подали ему решение. –

+1

@GurupadMamadapur Я спасаю _myself_, «коршу» решение и буду готов рассмотреть следующий вопрос. : P –

+0

#include #include #include #include #include INT основных() { символ пароля [10]; int i; int contor = 0; printf ("ввести парола"); scanf ("% s", & password); для (i = 0; i <10; i ++) { if (isalpha (password [1])) contor = 1; } if (contor == 1) {printf ("good pass");} else {printf ("bad pass");} return 0; } Я исправил его. Спасибо за ответы. – crt01

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