warning: implicit declaration

跟風遠走 提交于 2020-01-24 09:36:06

问题


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;
}

回答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.




回答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.



来源:https://stackoverflow.com/questions/21213109/warning-implicit-declaration

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!