- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我似乎无法解决这个问题。下面是我的代码:
#include<stdio.h>
#include<ctype.h>
#include<string.h>
_Bool are_anagrams (const char *word1, const char *word2);
int main (void)
{
char an1[30], an2[30];
int j;
printf("Enter first word: ");
scanf("%s", an1);
printf("Enter second word: ");
scanf("%s", an2);
printf("The words are");
j = are_anagrams (an1, an2);
if (j == 0)
{
printf(" not anagrams. \n");
}else
printf(" anagrams. \n");
return 0;
}
_Bool are_anagrams (const char *word1, const char *word2)
{
int i;
int check[26] = {0};
for(i=0; i<30; i++)
if(word1[i] == '\0')
i=40;
else
{
word1[i] = toupper(word1[i]);
check[word1[i]-65]++;
}
for(i=0; i<30; i++)
if(word2[i] == '\0')
i=40;
else
{
word2[i] = toupper(word2[i]);
check[word2[i]-65]--;
}
for(i=0; i<26; i++)
if(check[i] != 0)
{
return 0;
}
return 1;
}
这些是错误信息:
anagram1.c:38:3: warning: array subscript has type ‘char’ [-Wchar-subscripts]
word1[i] = toupper(word1[i]);
^
anagram1.c:38:3: error: assignment of read-only location ‘*(word1 + (sizetype)((long unsigned int)i * 1ul))’
anagram1.c:46:4: warning: array subscript has type ‘char’ [-Wchar-subscripts]
word2[i] = toupper(word2[i]);
^
anagram1.c:46:4: error: assignment of read-only location ‘*(word2 + (sizetype)((long unsigned int)i * 1ul))’
最佳答案
警告:
warning: array subscript has type ‘char’
是“toupper()”需要“int”类型作为参数的结果,而问题代码提供的是“char”类型。
word1[i] = toupper(word1[i]);
...
word2[i] = toupper(word2[i]);
要消除警告,给 toupper() 'int' 值:
word1[i] = toupper((unsigned char)word1[i]);
...
word2[i] = toupper((unsigned char)word2[i]);
为了彻底,您可以将“toupper()”返回的值从“int”转换回“char”:
word1[i] = (char)toupper((unsigned char)word1[i]);
...
word2[i] = (char)toupper((unsigned char)word2[i]);
错误:
error: assignment of read-only location
是尝试使用“const”标志修改值的结果:
_Bool are_anagrams (const char *word1, const char *word2)
如果合适,您可以通过消除“const”标志来消除错误:
_Bool are_anagrams (char *word1, char *word2)
或者,您可以制作“const”字符串的本地工作副本:
_Bool are_anagrams (const char *I__word1, const char *I__word2)
{
int rCode = 0;
int i;
int check[26] = {0};
char *word1 = strdup(I__word1);
char *word2 = strdup(I__word2);
for(i=0; i<30; i++)
if(word1[i] == '\0')
i=40;
else
{
word1[i] = toupper(word1[i]);
check[word1[i]-65]++;
}
for(i=0; i<30; i++)
if(word2[i] == '\0')
i=40;
else
{
word2[i] = toupper(word2[i]);
check[word2[i]-65]--;
}
for(i=0; i<26; i++)
if(check[i] != 0)
goto CLEANUP;
rCode=1;
CLEANUP:
free(word2);
free(word1);
return(rCode);
}
注意:以上代码使用问题代码正文,可能准确也可能不准确。本回答无意修复问题代码中的其他问题;只是为了演示通过创建参数的非“const”副本来绕过参数上的“const”标志的正确方法
关于C编程警告: array subscript has type 'char' [-Wchar-subscripts],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23506902/
目前我使用服务器接收 GCP Pub/Sub 消息,我想执行 Purchase.Subscriptions:acknowledge调用以确认在服务器收到通知时尚未确认的订阅。 这是场景... 用户购
在 SQL Server 中,在“订阅端”,如何知道表是否处于复制/订阅状态? 有什么想法吗? 最佳答案 我不确定这个问题是否有一个简单的答案,并且我认为答案可能会根据复制类型的不同而有所不同。我认为
我正在使用 Angular 5 并使用 subscribe() 订阅了一个 observable方法。我想知道是否只调用unsubscribe()订阅上的方法足以清理所有内容,或者我也应该调用 rem
我似乎无法解决这个问题。下面是我的代码: #include #include #include _Bool are_anagrams (const char *word1, const char *w
当我使用 gcc -Wall 运行程序时,我得到了 warning: array subscript has type ‘char’ 请帮我看看哪里出了问题。警告显示在第 20:7 和 21:7 行。
我有一个来自 BlockCollection 的 Observable,我像队列一样使用它 IObservable GetObservable() { _queue.GetConsum
错误 1:当我尝试从元数据中获取 stringValue 时,在 Swift3 中显示上述错误: let myMetadata: AVMetadataMachineReadableCodeObject
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 9 年前。 Improve
我正在将Paypal的订阅整合到我的网络服务中。。我想知道当我收到onApprove回调(Java SDK)时,订阅是否被激活。。这也意味着onApprove回调是否等同于从WebHook接收通知事件
这个问题在这里已经有了答案: Warning: array subscript has type char (3 个答案) 关闭 3 年前。 问题是这个警告在 15 和 18 警告:数组下标的类型为
根据卷积定理,卷积运算在傅里叶域变为逐点乘法——这里我有'fft_x'的形状(批量大小,高度,宽度,in_channels)这是输入数据的fft和类似的形状(高度,宽度,in_channels,out
我正在按照该教程进行操作,我正在运行带有 cygwin 编译器的 WindowsXP 32 位,该教程要求我运行以下代码: #include #include // forward declara
我有一个网站,我想实现付费订阅服务。它是一项简单的服务,只有两种类型的计划。现在,生病只是使用 Paypal 。但是在开始之前我有点迷茫,主要是数据模型。 我现在的主要问题是,我需要为每个订阅保留哪些
我们可以仅依靠subscr_eot来激活/停用帐户吗? 假设我们有以下情形: 在9/16,客户使用Paypal支付每月定期费用 服务。 24小时后, Paypal (Paypal)发送“subscr_
我的应用程序已在我的模拟器上完成,但当我尝试在我的手机上使用时,我遇到了 2 个错误 “下标”的使用不明确 我正在阅读这篇文章,但无法修复它。 How to solve Ambiguous use o
我在尝试使用下标访问范围的第 n 个元素时遇到问题。代码 super 简单: var range = 0.. = 0..)[0] 但是这些都没有解决问题。有没有办法让 Xcode 消除对 subscr
我是 angualr 2 的新手。我正在做一个小的练习应用程序。我有一个用户登录时的身份验证服务。这是它的登录功能。 login(email:string, password:string){
我是 Swift 的初学者,对运算符没有任何高级知识。 我有以下类(class) class Container { var list: [Any] = []; } 我想实现运算符 subscr
我正在尝试从 99 张纸中复制第二行,并将它们一个接一个地添加到第 100 张纸中。 vba 代码如下,但是我不断收到以下错误: 运行时错误'9': 下标超出范围 Sub copyrow()
我正在尝试在 Excel 中的 VBA 中创建一个宏,以将一个工作表的内容复制到另一个工作表(最终将升级为将内容从一个工作簿复制到另一个工作簿,但需要先证明这个概念)但我一直遇到运行时错误'9':“下
我是一名优秀的程序员,十分优秀!