warning: implicit declaration

JonnyTruelove picture JonnyTruelove · Jan 19, 2014 · Viewed 13.6k times · Source

I have an assignment I am supposed to turn in for my computer science MOOC CS50. In it I have to turn in the assignment over the Harvard website, but it won't accept my code while it says "Warning: implicit declaration..."

Is there a way to shut that off?

I have two functions that I am using, islower(), and isupper(), and they are what is causing the hangup.

My code seems to work just fine, it compiles and everything. BTW if anyone wants to tell me how crappy my code is that would be appreciated. I don't get a lot (or any) criticism taking classes over the web.

#include <stdio.h>
#include "cs50.h"
#include <stdio.h>
#include <string.h>

int main(int argc, string argv[])
{
    int salt, cipherNum;
    char cipher[40];
    char letter;


    //// Greeting
    printf("Please enter the text to ceez...\n");
    //// grab text

    string txxt = GetString();


    if (argc == 2) // must have command line argument
    {

        salt = atoi(argv[1]) % 26;
        //printf("Salt: %d\n", salt);
    }

    else // yell at user if command line arg is not there
    {
        printf("Not cool! I need something to caesariphy...\n");
        return 1;
    }

    //~ 
    // This will iterate over each letter in the text
    for (int i = 0, n = strlen(txxt); i < n; i++)
    {
        // int letter = 'A'; i.e. 65 
        // Must Preserve Case

        //~ printf("%c---\n", txxt[i]);

        //if lower start from 'a'or 97
        if ( islower(txxt[i]) )
        {
            //~ printf("islower\n");
            letter = txxt[i];
            cipherNum = txxt[i];
            //~ printf("%c is the letter\n", letter + salt);
            //~ printf("%d is the cipherNumz\n", cipherNum);

            if ((letter + salt) > 122)
            { 
                //~ printf("letter + salt is > 90: %d \n", letter+salt);
                cipherNum = (96 + (cipherNum + salt) % 122);
                //~ printf("%c is the letters", cipherNum); 
            }
            else
            {
                cipherNum = letter + salt;
            }



            cipher[i] = cipherNum ;

        }
        else if ( isupper(txxt[i]))
        {

            letter = txxt[i];
            cipherNum = txxt[i];
            //printf("%c is the letter\n", letter + salt);
            //printf("%d is the cipherNumz\n", cipherNum);

            if ((letter + salt) > 90)
            { 
                //printf("letter + salt is > 90: %d \n", letter+salt);
                cipherNum = (64 + (cipherNum + salt) % 90);
                //printf("%c is the letters", cipherNum); 
            }
            else
            {
                cipherNum = letter + salt;
            }

            //printf("%c\n", cipherNum);
            cipher[i] = cipherNum ;
            //printf("testing12\n");    
        }
        else
        {
            cipher[i] = txxt[i];
        }
        //~ 

    }
    cipher[strlen(txxt) + 1] = '\0';
    printf("%s\n", cipher);


    return 0;
}

Answer

tabstop picture tabstop · Jan 19, 2014

If you're using the standard islower and isalpha, then somewhere at the top you should see

#include <ctype.h>

for that to happen.