我的C代码可以编译但不会执行,我不知道为什么

问题描述 投票:0回答:1

我的代码如下:

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

int points[] = {1, 3, 3, 2, 1, 4, 2, 4, 1, 8, 5, 1, 3, 1, 1, 3, 10, 1, 1, 1, 1, 4, 4, 8, 4, 10};

int compute_score(string word);

int main(void)
{
    string word1 = get_string("Player 1: ");
    string word2 = get_string("Player 2: ");

    int score1 = compute_score(word1);
    int score2 = compute_score(word2);

    if (score1 > score2)
    {
        print("Player 1 wins! \n");
    }
    else if (score2 > score1)
    {
        print("Player 2 wins! \n");
    }
    else
    {
        print("Tie! \n");
    }
}

int compute_score(string word)
{
    int score = 0;
    for (int i = 0, len = strlen(word); i < len; i++)
    {
        if isupper(word[i])
        {
            score += points[word[i] - "A"];
        }
        else
        {
            score += points[word[i] - "a"];
        }
    }
    return score;
}

我期望它能够执行,但我仍然不知道为什么它没有执行。当我尝试运行该文件时,它一直显示“权限被拒绝”,尽管“make”功能工作正常。有什么想法吗?

c cs50
1个回答
0
投票

这是因为您没有

Execution Permission
该文件。

如果你这样做

ls -la
你会看到这样的东西:

drwxr-xr-x 2 hexatech hexatech 4096 Feb 14 09:01 .
drwxr-xr-x 4 hexatech hexatech 4096 Feb 13 13:51 ..
-rwxr-xr-x 1 hexatech hexatech  511 Feb 13 14:45 Makefile
-rw-r--r-- 1 hexatech hexatech  347 Feb 14 09:00 main.c

左边部分

drwxr-xr-x
告诉有关文件的信息。

开始处的

d
代表
Directory
rwx
代表
read
write
execution

您有3次

rwx
,顺序是
User
group
other

您可以使用

chmod
命令更改文件权限。

欲了解更多信息,请使用

chmod --help
或/和
man chmod

当您使用

make
时,会调用
Makefile
并为您设置该权限。

© www.soinside.com 2019 - 2024. All rights reserved.