简体   繁体   English

警告:隐式声明

[英]warning: implicit declaration

I have an assignment I am supposed to turn in for my computer science MOOC CS50. 我有一项任务,我应该为我的计算机科学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. 我有两个函数,我正在使用islower()isupper() ,它们是导致挂断的原因。

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

If you're using the standard islower and isalpha , then somewhere at the top you should see 如果你使用标准islowerisalpha ,那么你应该看到顶部的某个地方

#include <ctype.h>

for that to happen. 要做到这一点。

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. 如上所述,添加所需的标头。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM