C 从多项式中提取幂
。。谁能告诉我这里怎么了?? 我一直在运行代码,但什么也没发生。。。但在我看来这没什么问题: 如果用户输入的内容不包含“^”,那么您的代码将显示为num,此处未初始化C 从多项式中提取幂,c,C,。。谁能告诉我这里怎么了?? 我一直在运行代码,但什么也没发生。。。但在我看来这没什么问题: 如果用户输入的内容不包含“^”,那么您的代码将显示为num,此处未初始化 int main() { int num,k,p,w; char parts[30]; char power[30]; scanf("%s",parts); int count=strlen(parts); for(w=0;w<count;w++){ i
int main()
{
int num,k,p,w;
char parts[30];
char power[30];
scanf("%s",parts);
int count=strlen(parts);
for(w=0;w<count;w++){
if(parts[w]=='^')
num=w;
}
if(isdigit(num)) {
for(k=num+1 ; k<count ;k++)
strcat(power,parts[k]);
}
else{
strcpy(power,'1');
}
p=atoi(power);
printf(" the power is : %d\n",p);
}
如果输入包含“^”,则If将为true
在这里:
strcat在其第一个参数中找到NUL终止符,并从该位置覆盖其第二个参数。但是电源没有初始化!所以,这也调用了。此外,parts[k]是一个字符,但strcat希望它的两个参数都以NUL结尾,并且都是const char*类型。
使用初始化`电源
strcat(power,parts[k]);
并将strcat更改为
同样的问题也出现在这里:
strcat(power,&parts[k]);
换成
strcpy(power,'1');
去修理它。双引号使const char*类型的字符串文本\0终止
在这里:
用户可以为\0终止符输入长度超过29个字符+1的字符串。这也会导致。通过使用限制要扫描的字符数来修复此问题
scanf("%s",parts);
完成此操作后,scanf将从标准输入流中最多扫描29个字符+1的\0终止符
输入示例:5x^4目标要做什么/变量w是零件数组的索引。执行num=w会将此索引分配给变量num,而不是字符串中的实际数字。请在此处发布时构造您的问题。你的错误是什么,你不明白的是什么。。。我们不是读心术的人;它工作得很好。。。我将
strcpy(power,'1');
strcpy(power,"1");
scanf("%s",parts);
scanf("%29s",parts);