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=]'
的数组,以保证数组中包含字符串。
这是不完整的代码,但我正在尝试复制 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=]'
的数组,以保证数组中包含字符串。