如何定义和调用此代码作为函数?

时间:2019-06-16 11:52:23

标签: c function memory-management c-strings cs50

我是编程新手。我正在CS50中学习。我不确定如何将此代码定义为函数。我想让该函数返回key [n]。以及如何调用该函数?

#include <stdio.h>
#include <cs50.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, string argv[])
{

    int n = strlen(argv[1]);
    int key[n];
    int k =0;

    for( int i = 0; i < strlen(argv[1]); i++)
    {
        if(islower(argv[1][i]) != 0)

        {
            for(int j = 97; j < argv[1][i]; j++)
            {
                k++;
            }
            key[i] = k;
            k = k*0;
        }

        if(isupper(argv[1][i]) != 0)
        {
            for(int j = 65; j < argv[1][i]; j++)
            {
                k++;
            }
            key[i] = k;
            k = k*0;
        }
    }


}

2 个答案:

答案 0 :(得分:1)

例如,该函数可以通过以下演示程序中的以下方式查看。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int * f( const char *s )
{
    int *key = NULL;

    size_t n = strlen( s );

    if ( n != 0 && ( key = calloc( n, sizeof( int ) ) ) != NULL )
    {
        for ( size_t i = 0; i < n; i++ )
        {
            unsigned char c = s[i];

            if ( islower( c ) ) key[i] = c - 'a';
            if ( isupper( c ) ) key[i] = c - 'A';
        }
    }

    return key;
}

int main( int argc, char * argv[] ) 
{
    if ( argc == 2 ) 
    {
        int *key = f( argv[1] );
        if (key != NULL)
        {
            // some other code
            free( key );
        }
    }

    return 0;
}

答案 1 :(得分:0)

函数是带有“ in”和“ out”的代码块。您可以定义一个函数,以使用int key (int example){}之类的语法从外部接收值,然后使用key(1);将值传递给函数调用。

您的main()也是一个函数。 main()接收的值现在正在您的代码中使用。

您自己的函数(您可以在main()之外定义)可以通过多种方式完成,但是最简单的方法是将几乎所有相同的代码保留在main()中,同时弄清楚如何传输main() )接收到您的邮件中。

相关问题