warning: implicit declaration
Solution 1
If you're using the standard islower
and isalpha
, then somewhere at the top you should see
#include <ctype.h>
for that to happen.
Solution 2
It seems that your header files have no prototype declared for those functions, so the function itself is implicitly treated as the function prototype. As mentioned, add needed headers.
JonnyTruelove
Updated on June 08, 2022Comments
-
JonnyTruelove about 2 years
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()
, andisupper()
, 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; }
-
JonnyTruelove over 10 yearsok thanks. I tried making a prototype for it, but now I have errors saying "requires expression of scalar type". But your method works even better! Thanks
-
Keith Thompson over 10 yearsThere's no point declaring standard functions yourself. Use the standard headers; that's why they're there.