扫地浮尘 2017-11-28 14:21 采纳率: 50%
浏览 1349
已采纳

const char *,char *,char const *中vs错误问题,求指教

int spitstring(const char *str, char c, char buf[10][30], int *count)//14 行
{
if (str == NULL || buf == NULL || count == NULL)
return -1;
const char *start = str;//18行
char *p = NULL;
int i = 0;
do
{
p = strchr(start, c);
if (p != NULL)
{
int len = p - start;
if (len > 0)
{
底下不写了
}}while (*start);//41行
底下不写了

    int main(void)

{
const char *p = "abcdef,acccd,eeee,aaaa,e3eeee,ssss,";
char buf[10][30] = { 0 };
int n = 0;
int ret = 0;
int i = 0;

ret = spitstring(p, ',', buf, &n);

    错误  1   error C2143: 语法错误 : 缺少“;”(在“const”的前面)  18行
    错误  16  error C2100: 非法的间接寻址  41行

把const char *换成const char *或者char *错误都消失
这种错误只在vs中存在,linux中编译无此错误
求指教

  • 写回答

3条回答 默认 最新

  • 龙跃十二 博客专家认证 2017-11-30 11:34
    关注

    你定义变量太靠后了,我给你修改了

     #include <stdio.h>
    #include <string.h>
    #include <Windows.h>
    
    int spitstring(const char *str, char c, char buf[10][30], int *count)
    {
        const char *start = str;
        char *p = NULL;
        int i = 0;
        if (str == NULL || buf == NULL || count == NULL)
            return -1;
        start = str;
        do
        {
            p = strchr(start, c);
            if (p != NULL)
            {
                int len = p - start;
                if (len > 0)
                {
                    strncpy(buf[i], start, len);
                    buf[i][len] = 0;
                    i++;
                }
                start = p + 1; 
            }
            else
            {
                strcpy(buf[i], start);
                i++;
                break;
            }
        } while (*start);
    
        if (i == 0)
        {
            strcpy(buf[i], start);
            return -2;
        }
    
        *count = i;
        return 0;
    }
    
    int main(void)
    {
        const char *p = "abcdef,acccd,eeee,aaaa,e3eeee,ssss,";
        char buf[10][30] = { 0 };
        int n = 0;
        int ret = 0;
        int i = 0;
    
        ret = spitstring(p, ',', buf, &n);
        if (ret != 0)
        {
            printf("error:%d\n", ret);
    
            return ret;
        }
    
        for (i = 0; i < n; i++)
        {
            printf("%s\n", buf[i]);
        }
    
        system("pause");
    
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 优质github账号直接兑换rmb,感兴趣伙伴可以私信
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)