error: incompatible integer to pointer conversion assigning to 'string' (aka 'char *') from 'int' C

error: incompatible integer to pointer conversion assigning to 'string' (aka 'char *') from 'int' C

这是不完整的代码,但我正在尝试复制 argv[1] 的大小写副本,但收到一条错误消息。如果这是一种普遍的低效方法或完全错误的方法,我将不胜感激任何提示,但在这种特定情况下有没有办法修复错误?

正如您从这个问题可以看出的那样,我对编码非常陌生,所以如果它是一个愚蠢的问题,我很抱歉,但错误可能发生在哪里?我意识到 argv[1] 正在以某种方式转换为整数,但我不知道在哪里也不知道如何真正修复它。

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

int main(int argc, string argv[])
{
    string keyu[26];
    string keyl[26];
    string key = argv[1];

    for (int u = 0; u < strlen(key); u++)
    {
        keyu[u] = toupper(key[u]);
    }

    for (int l = 0; l < strlen(key); l++)
    {
        keyl[l] = tolower(key[l]);
    }

它给出的错误是:

14:17: error: incompatible integer to pointer conversion assigning to 'string' (aka 'char *') from 'int' [-Werror,-Wint-conversion]
keyu[u] = toupper(key[u]);

这些声明

string keyu[26];
string keyl[26];

相当于

char * keyu[26];
char * keyl[26];

也就是说它们是指针数组。

这在这些陈述中

keyu[u] = toupper(key[u]);
keyl[l] = tolower(key[l]);

您正在尝试将整数(例如 toupper(key[u]))分配给指针(例如 keyu[u]

看来你真的想声明字符数组

char keyu[26];
char keyl[26];

注意在for循环后面要追加以零结尾字符'[=16=]'的数组,以保证数组中包含字符串。