You need to enable JavaScript to run this app. C++使用指针实现字符串数组图书查找的代码调试求助
优惠活动
大模型
产品
解决方案
定价
更多

C++使用指针实现字符串数组图书查找的代码调试求助

C++指针版本图书查询功能调试修复

核心错误点

  • 指针类型定义错误:你定义的const char *p[10][100]是二维指针数组,和二维字符数组的指针类型不匹配。char A[10][100]是由10个长度为100的char数组组成的二维数组,指向它的行指针应该定义为char (*p)[100],表示指向长度为100的char数组的指针。
  • 指针偏移步长错误:错误定义的p执行p++时,步长不符合二维数组行的偏移规则,无法正确跳转到下一个书名的首地址。
  • 可选优化:原代码中存储搜索关键词的s数组长度只有10,超过9个字符的书名会触发缓冲区溢出,建议修改为和A的行长度一致的100。

修复后完整代码

#include <iostream>
#include <string.h>
using namespace std;
int main()
{
    int n,i,c=0;
    char A[10][100],s[100];
    char (*p)[100]; // 修正指针类型
    cout<<"Enter no:of books: ";
    cin>>n;
    for(i=0;i<n;i++)
        cin>>A[i];
    cout<<"Enter book you want to search: ";
    cin>>s;
    p = A; // 直接赋值数组名,等价于p=&A[0]
    for(i=0;i<n;i++)
    {
        if(strcmp(*p,s)==0)
            c++;
        p++; // 步长为100字节,刚好跳转到下一行
    }
    if(c==0)
        cout<<"Not found";
    else
        cout<<"Book found";
    return 0;
}

内容的提问来源于stack exchange,提问作者Gokul Jayan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 11:36:03