JonnyTruelove JonnyTruelove - 4 months ago 37
C Question

warning: implicit declaration

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

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

#include <ctype.h>

for that to happen.