Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
变量值未分配给C中的另一个变量_C_Variables_Cs50 - Fatal编程技术网

变量值未分配给C中的另一个变量

变量值未分配给C中的另一个变量,c,variables,cs50,C,Variables,Cs50,我目前正在学习C语言。我已经获得了将用户输入的值设置为num的代码,但是当我尝试分配另一个变量(占位符1)num的值并返回该新变量时,我得到了一组随机数。不太清楚为什么新变量没有收到num持有的内容。在我最初的帖子中,我遗漏了很多代码,因为我不知道我是否能够分享所有代码。是的,这是一个CS50问题,不,我不是要求解决问题集,只是指定的变量问题。很多都被注释掉了,因为我试图找出为什么我得到的值与预期值不同 #include <stdio.h> #include <cs50.h&g

我目前正在学习C语言。我已经获得了将用户输入的值设置为num的代码,但是当我尝试分配另一个变量(占位符1)num的值并返回该新变量时,我得到了一组随机数。不太清楚为什么新变量没有收到num持有的内容。在我最初的帖子中,我遗漏了很多代码,因为我不知道我是否能够分享所有代码。是的,这是一个CS50问题,不,我不是要求解决问题集,只是指定的变量问题。很多都被注释掉了,因为我试图找出为什么我得到的值与预期值不同

#include <stdio.h>
#include <cs50.h>
#include <math.h>

string cardType;
long get_card_num(string prompt);
long length;
long tempNumL;
long tempNumS;
int startNum;
long sum1;
long sum2;


int main(void)
{
        long n = get_card_num("Number: ");      //prompts user for input
        printf("%li\n",n);
}

long checksum(num)
{
    long placeHolderA=num;
    long placeHolderB=num/10;

    /*do
    {
        sum1+=(placeHolder1%10);
        placeHolder1=placeHolder1/100;
    }
    while(placeHolder1/100>1);

    do
    {
        sum2+=(placeHolder2%10);
        placeHolder2= placeHolder2/100;
    }
    while(placeHolder1/100>0);
    */
    return num;
}

long get_card_num(string prompt)
{
    long num;

            num = get_long("%s", prompt);           //assigns num to the value of what user input

        tempNumL=num; // used to get length
        tempNumS=num; // used to get starting num

    do
    {
        tempNumL = tempNumL/10;                 //gets length
        length++;
    }
    while(tempNumL>0);

    if(length<13)
    {
        get_card_num(prompt);
    }


    checksum(num);




    /*
    if((length==13 || length==16) && startNum==4)
    {
    }

    if(length==15)
    {
    }

    if(length==16 && startNum!=4)
    {
    }
    else
    {
        printf("INVALID");
    }
*/
return num;
}
#包括
#包括
#包括
字符串卡片类型;
长获取卡片数量(字符串提示);
长度长;
长节律;
长节律;
int startNum;
长sum1;
长sum2;
内部主(空)
{
long n=get_card_num(“Number:”);//提示用户输入
printf(“%li\n”,n);
}
长校验和(num)
{
长占位符a=num;
长占位符b=num/10;
/*做
{
sum1+=(占位1%10);
占位符1=占位符1/100;
}
而(1/100>1);
做
{
sum2+=(2%10);
占位符2=占位符2/100;
}
而(1/100>0);
*/
返回num;
}
长获取卡片数量(字符串提示)
{
长数;
num=get_long(“%s”,prompt);//将num分配给用户输入的值
tempNumL=num;//用于获取长度
tempNumS=num;//用于获取起始num
做
{
tempNumL=tempNumL/10;//获取长度
长度++;
}
而(tempNumL>0);

如果(length,您似乎对一个称为变量范围的概念有困难

在此代码中

long checksum(num)
{
    long placeHolder1 = num;
}

占位符1
仅在函数执行期间存在。一旦执行离开此函数,占位符1将超出范围并有效消失。

您可能需要执行以下操作:

#include <stdio.h>

long checksum(long num) // it's in top because it's used after its declaration
{
    return num;
}

long get_num(char prompt[]) // 'string' is a concept of C++
{
    long num;

    printf("%s", prompt);
    scanf("%ld", &num); // assigns num to the value of what user input
                        // use %ld for 'long int'

    long placeHolder1 = checksum(num); // placeHolder1 wasn't declared here

    return placeHolder1;
}

int main(void)
{
    long n = get_num("Number: "); // prompts user for input
    printf("%ld\n", n);

    return 0;
}

而且,这也没有什么意义:
long checksum(num)
声明。根据变量作用域规则,您使用的是函数未知的
num
,如果它是
struct
或数据类型,它必须有一个变量名。

get_num
中定义的
placeholder 1
在哪里?这不可能是您的实际代码,如果是,它可能无法编译。什么's
long checksum(num)
?您对它有什么期望?这段代码实际编译了吗?如果没有,请用一个完整的可复制示例进行更新。这是一个cs50问题吗?我更新了问题@M.M
Number: 12
12