title: Segmentation fault in program that counts digits, lower case letters, and punctuation in user inputted strings
body: <p>Writing a program that asks for user input of 3 strings. The program then takes each string and counts the number of digits, lower case letters, and punctuation. Program compiles but after the user enters the first string, there is a segmentation fault and the program crashes. 
  When I run the program this is the result:</p>
  
  <blockquote>
    <p>Enter the first string :1  Enter the second string :Enter the second
    string :2  Segmentation fault</p>
  </blockquote>
  
  <p>Not sure exactly what is happened but any help would be awesome! Thanks.</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;string.h&gt;
  
  int countDigit(char *s);
  int countLower(char *s);
  int countPunct(char *s);
  
  int main (void)
  {
          int digit, lower, punct;
          char *first;
          char *second;
          char *third;
          char *c;
  
          printf("Enter the first string\n:");
          scanf("%99s", first);
          printf("Enter the second string\n:");
          scanf("%99s", second);
          printf("Enter the second string\n:");
          scanf("%99s", third);
  
          digit=countDigit(first);
          lower=countLower(first);
          punct=countPunct(first);
  
          printf("There are %d digits, %d lower case letters and %d punctuation chars in a\n", digit, lower, punct);
  
          digit=countDigit(second);
          lower=countLower(second);
          punct=countPunct(second);
  
          printf("There are %d digits, %d lower case letters and %d punctuation chars in b\n", digit, lower, punct);
  
          digit=countDigit(third);
          lower=countLower(third);
          punct=countPunct(third);
  
          printf("There are %d digits, %d lower case letters and %d punctuation chars in c\n", digit, lower, punct);
  
  }
  
  int countDigit(char *s)
  {
          int count = 0;
          char temp;
          while(*s !=0)
          {
                  temp = *s;
                  if (isdigit(temp))
                  {
                          count++;
                  }
                  s++;
          }
          return count;
  }
  
  int countLower(char *s)
  {
          int count = 0;
          char temp;
          while (*s !=0)
          {
                  temp = *s;
                  if (islower(temp))
                  {
                          count++;
                  }
                  s++;
          }
          return count;
  }
  
  int countPunct(char *s)
  {
          int count = 0;
          char temp;
          while (*s !=0)
          {
                  temp = *s;
                  if (ispunct(temp))
                  {
                          count++;
                  }
                  s++;
          }
          return count;
  }
  </code></pre>