注册 登录
编程论坛 C语言论坛

这串代码怎么行不通

新手714 发布于 2020-05-13 23:57, 2008 次点击
#include<stdio.h>
#include<string.h>
int main()
{
    printf("输入一串字符:\n");
    char zf[14],*p;
    int c=0;
    p = zf;
    gets_s(zf);
    for (p = zf; p != '\0'; p++)
        c++;
    printf("字符串的长度是:%d", c);
    return 0;
}
5 回复
#2
forever742020-05-13 23:59
*p!='\0';
#3
新手7142020-05-14 00:02
回复 2楼 forever74
大佬大佬
#4
rjsp2020-05-14 08:52
gets_s(zf); 是怎么编译通过的?我猜你用的不是C编译器,而是C++编译器。
另外,gets_s 在C++中不是标准函数,只是VC的一个私有扩展。
#5
lin51616782020-05-16 14:23
以下是引用rjsp在2020-5-14 08:52:48的发言:

gets_s(zf); 是怎么编译通过的?我猜你用的不是C编译器,而是C++编译器。
另外,gets_s 在C++中不是标准函数,只是VC的一个私有扩展。

gets_s 是C11开始添加到标准库里面的函数
不一定是私有扩展
https://zh.
#6
rjsp2020-05-16 21:47
回复 5楼 lin5161678
我说的是“在C++中不是标准函数”
而我之所以谈到C++,是因为他的代码必然用的不是C编译器,而是C++编译器。若是C编译器,那么gets_s少一个参数。

我的意思是:
  若用C编译器,gets_s(zf) 应该改为 gets_s(zf,14);
  若用C++编译器,别用 gets_s 这个在C++标准库中不存在的函数。
我觉得 用C++编译器去学C 不是个好习惯,最终会学成个四不像。
1