這是不完整的代碼,但我正在嘗試制作大寫和小寫的 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]);
uj5u.com熱心網友回復:
這些宣告
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];
請注意,您應該'\0'在 for 回圈之后附加帶有終止零字符的陣列,以確保陣列包含字串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/483982.html
下一篇:如何減少定義指標函式的函式數量
