2013-11-13 2 views
0

Я получаю сообщение об ошибке в этой части моего кода со сравнением между указателем и целоеПроверяющие строку только цифры

#include<stdio.h> 

int validateString(char *inStr); 
int main() 
{ 
    char *stringInput=""; 
    printf("Please enter a 10 digit phone number: "); 
    scanf("%s",&stringInput); 
    if (validateString(stringInput)== 1) 
    { 
     printf("%s is a valid phone number.",stringInput); 
    } 
    elseif (validateString(stringInput)== 0) 
    { 
     printf("%s is a valid phone number.",stringInput); 
    } 
} 

int validateString(char *inStr) 
{ 
    int i; 
    int length= strlen(inStr); 
    for (i=0;i<length;i++) 
    { 
     if(!(inStr[i]>= '0' && inStr <= '9' || inStr[i]== ' ')) 
     { 
      return 0; 
     } 
     elseif(length>=12) 
     { 
      return 0; 
     } 
    } 
    return 1; 
} 

Что я должен изменить в указателе, проходящей через в функции?

ответ

0

Вам нужна скорость, чтобы поместить строку в

т.е.

char *stringInput=""; 

должен быть

char stringInput[20]; 

Тогда

scanf("%s",stringInput); 

ли даже не добраться до точки, где elseif не будет т компилировать

1

Изменить это из: (см рядный комментарии для объяснения изменений ...)

 char *stringInput="";//creates no space for user input 
     printf("Please enter a 10 digit phone number: "); 
     scanf("%s",&stringInput); //`stringInput` already pointer (`char *`), does not require `&`. 

Для

 char stringInput[20];//for additional space in case user enters more than 10 
     printf("Please enter a 10 digit phone number: "); 
     scanf("%s",stringInput);//do not use `&` for string 
Смежные вопросы