标题:照着打的出了错,会了语法不会编,很尴尬的状态,讲的会又啥也不会
取消只看楼主
梨花压海棠
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2020-2-13
结帖率:100%
已结贴  问题点数:20 回复次数:6 
照着打的出了错,会了语法不会编,很尴尬的状态,讲的会又啥也不会
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void inverse();
void inverse01(buf, mybuf);
void main()
{
    char buf[] = "abcde";
    char mybuf[1024] = { 0 };
    inverse(buf);
    inverse01(buf, mybuf);
}
void inverse(char *p)
{
    if (p == NULL)
        return;
    if (*p == '\0')
        return;
    inverse(p+1);
    printf("%c", *p);
}
void inverse01(char* p,char* result)
{
    if (p == NULL||result==NULL)
        return;
    if (*p == '\0')
        return;
    inverse(p + 1,result);
    strncat_s(result, p, 1);
}  
严重性    代码    说明    项目    文件    行   
错误    C2198    “strncat_s”: 用于调用的参数太少            
警告    C4020    “inverse”: 实参太多    API            
警告    C4024    “strncat_s”: 形参和实参 2 的类型不同    API        
警告    C4024    “strncat_s”: 形参和实参 3 的类型不同    API            
警告    C4047    “函数”:“rsize_t”与“char *”的间接级别不同    API    E   
警告    C4047    “函数”:“const char *”与“int”的间接级别不同            
错误(活动)    E0165    函数调用中的参数太少   
下面程序strncpy_s(new, str + i,count);语句出现错误与上面类似   
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int tranSpace(char* str, char* new)
{
    char* p = str;
    int i, j, count = 0;
    if (str == NULL || new == NULL)
    {
        printf("func tranSpace()\n");
        return -1;
    }
    i = 0;
    while (isspace(p[i]) && p[i] != '\0')
        i++;
    j = strlen(p) - 1;
    while (isspace(p[j]) && p[j] != '\0')
        j--;
    count = j - i + 1;
    strncpy_s(new, str + i,count);
    new[count] = '\0';
    return 0;
}
int main()
{   
    char buf[1024] = {0};
    char* str = "          abcde              ";
    tranSpace(str,buf);
    printf("%s", buf);

}
搜索更多相关主题的帖子: return NULL str char include 
2020-02-13 17:10
梨花压海棠
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2020-2-13
得分:0 
回复 2楼 叶纤
[
  老哥,我是看的B站视频,截图给您,不知道您能不能收到,
2020-02-14 10:29
梨花压海棠
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2020-2-13
得分:0 
回复 2楼 叶纤
[
  老哥,我是看的B站视频,截图给您,不知道您能不能收到,
2020-02-14 10:29
梨花压海棠
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2020-2-13
得分:0 
回复 3楼 纯蓝之刃
那个strncat_s(result, p, 1);就是在void inverse01(char* p,char* result)函数里啊,我希望它是往result里拷贝p指的值,每次拷贝1个,我觉得这个函数本质是利用那个栈的先进后出,利用函数递归,一层一层的返回,我用的vs2019,它提示我strncat加_s才安全,errno_t strncat_s(char * restrict dest,rsize_t destsz,const char * restrict src,rsize_t count);这是那个函数的使用方法,我觉得我是没搞懂这个函数的方法
2020-02-14 10:37
梨花压海棠
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2020-2-13
得分:0 
回复 7楼 叶纤
第一个形参是忘了,第二个是我改了参数名,因为我是看了视频然后自己打了一遍,然后再对照视频改,所以参数名改了,所以替换了,应该没问题。    最后那个_s是因为我用的vs2019,它要求我加_s,不然它就提示不安全。
2020-02-14 11:06
梨花压海棠
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2020-2-13
得分:0 
回复 7楼 叶纤

错误    C4996    'strncat': This function or variable may be unsafe. Consider using strncat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.    API    E:\Project\C\shujujiegou\API\API\pr_倒转str.c    31   
这是没加_s的错误
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void inverse(char *p);
void inverse01(char *p, char *result);
void main()
{
    char buf[] = "abcde";
    char mybuf[1024] = { 0 };
    inverse(buf);
    inverse01(buf, mybuf);
}
void inverse(char *p)
{
    if (p == NULL)
        return;
    if (*p == '\0')
        return;
    inverse(p+1);
    printf("%c", *p);
}
void inverse01(char* p,char* result)
{
    if (p == NULL||result==NULL)
        return;
    if (*p == '\0')
        return;
    inverse(p + 1,result);

    strncat_s(result, p, 1);
}  
这是我改了形参的代码,还是提示一样的问题,应该是我strncat这个函数没搞明白,但是用法我也看不懂,视频上也就是这样写的,
errno_t strncat_s(char * restrict dest,rsize_t destsz,const char * restrict src,rsize_t count);
2020-02-14 11:15
梨花压海棠
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2020-2-13
得分:0 
回复 10楼 叶纤
不是大哥,您注释的三句我都改了啊,第一形参加了,第二形参改了,第三它加不了_s啊,我把您回复我的也粘贴运行了,也是提示_s的错误,应该是我那strncat_s的函数没掌握
2020-02-14 12:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-499216-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.171184 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved