关于c语言中strlen函数使用

问题描述

关于c语言中strlen函数使用

/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

#include
struct btbucode//定义结构体btbucode
{
int n;

char pn[50];
};
struct btbucode code[]={{11, "cailiao"},{12, "caiji"},{13, "shang"},{14, "jingji"},{15, "jixin"},
{16, "shipin"},{17, "lixueyuan"},{18, "fama"},{19, "waiguoyu"},{20, "yishuchuanmei"},
{95, "gonghui"},{96,"jiaowuchu"},{97,"renshichu"},{98,"kejichu"},{99,"xiaoban"}};//定义结构体数组code并初始化

/* PRESET CODE END - NEVER TOUCH CODE ABOVE */
#include
int main()
{int m,flag=0,i;
scanf("%d",&m);
for(i=0;i<strlen(code);i++)
if(m==code[i].n) {flag=1;printf("%s
",code[i].pn);break;}
if(flag==0) printf("未找到
");
return 0;}

我用了一个strlen函数来算结构体数组长度 但是出现错误提示
error C2664: 'strlen' : cannot convert parameter 1 from 'struct btbucode [15]' to 'const char *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

解决方案

code是结构体,不是字符串。
strlen的原理是从字符串开始位置往后寻找,作为字符串结束的标志得到字符串的长度。
因此对于一般数组,没有办法得到它的长度。

解决方案二:

strlen是从字符串开始位置(你提供的指针)往后寻找,返回这个长度,用来计算你这个数组的长度肯定不行啊

解决方案三:

#include
size_t strlen(const char *s);
The strlen() function calculates the length of the string s, excluding
the terminating null byte ('').

解决方案四:

C语言之strlen函数
c语言关于strlen函数的理解
C语言strlen函数的注意

时间: 2024-08-03 19:47:34

关于c语言中strlen函数使用的相关文章

c语言-C语言中Free函数释放内存为何释放不了!!!!!!!

问题描述 C语言中Free函数释放内存为何释放不了!!!!!!! #include #include void testFree(char *par) { void*free(par); par = NULL; } int _tmain(int argc, _TCHAR* argv[]) { char path[10] = {"abc"}; char *str = (char *) malloc(100 *sizeof(char)); memset(str,0x00,100 *size

c语言中setcolor函数的如何使用改变指定字体的颜色?

问题描述 c语言中setcolor函数的如何使用改变指定字体的颜色? 好比输出hello world只让world变成红色,而其他的字体不换颜色,也就是只改变指定字体的颜色.能认为的控制. 解决方案 setcolor不是标准c里的函数.graphics.h是turboc专有的.用graphics.h必须用turboc 解决方案二: setcolor不是标准c里的函数.graphics.h是turboc专有的.用graphics.h必须用turboc 解决方案三: vc中: #include <w

c语言中setcolor函数的如何使用改变指定字体的颜色?最好给个代码例子谢谢。

问题描述 c语言中setcolor函数的如何使用改变指定字体的颜色?最好给个代码例子谢谢. 好比输出hello world只让world变成红色,而其他的字体不换颜色,也就是只改变指定字体的颜色.能认为的控制. 解决方案 1.可以不用setcolor函数来实现: printf(""hello %sworld%sn""33[0;40;31m""33[0m""); 解决方案二: 我在linux上测试了可以啊,你在什么平台上测试的.

循环问题-C语言中if函数中的问题

问题描述 C语言中if函数中的问题 #includeint main(){ int num[2][6]={{000000}{000000}}; int i=0j=0mnpz; printf(""Please type 1 for first classPlease type 2 for economy ""); { for(p=1;p<=10;p++) { scanf(""%d""&z); if(z==1&

c语言-C语言中select函数 应用于网络存储中配合fread/fwrite是否存在阻塞问题

问题描述 C语言中select函数 应用于网络存储中配合fread/fwrite是否存在阻塞问题 利用fread fwrite 读写网络存储上的文件时,是否会出现阻塞问题? 我的感觉是会出现但是无法通过select判断,因为select判断的是内容是否存在,就是文件是否存在,而对于文件fread fwrite没有发现文件也会报错 但是一旦文件存在开始读写以后发生了网络传输中断引起阻塞 那么还是会挂住 而所谓的非阻塞机制无法发挥作用 不知道我的理解是否正确? 谢谢大家发表看法. 解决方案 阻塞和非

关于c语言中malloc函数的问题

问题描述 关于c语言中malloc函数的问题 c语言中,在子函数中用malloc函数开辟的空间在主函数中还有效吗? 解决方案 原型:? void *malloc(unsigned int size); #include或#include malloc的全称是memory allocation,中文叫动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存. malloc 向系统申请分配指定size个字节的内存空间(连续的一块内存).返回类型是 void* 类.

简述C语言中system()函数与vfork()函数的使用方法_C 语言

C语言system()函数:执行shell命令头文件: #include <stdlib.h> 定义函数: int system(const char * string); 函数说明:system()会调用fork()产生子进程, 由子进程来调用/bin/sh-c string 来执行参数string 字符串所代表的命令, 此命令执行完后随即返回原调用的进程. 在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT 和SIGQUIT 信号则会被忽略. 返回值: 1.如果 sy

c语言-C语言中scanf函数问题

问题描述 C语言中scanf函数问题 #include<stdio.h> int main() { char a1[5],a2[5],a3[5],a4[5]; scanf("%s",a1); printf("END1"); scanf("%s",a2); printf("END2"); scanf("%s",a3); printf("END3"); scanf("%

Go语言中append函数用法分析_Golang

本文实例分析了Go语言中append函数用法.分享给大家供大家参考.具体如下: Go语言中append的功能十分强大,使用它可以使很多功能的实现变得更加简洁.以下为简单对比: .将一个slice插入到另一个slice的指定位置: 不使用append: 复制代码 代码如下: func insertSliceAtIndex(slice_origin []int, slice_to_insert []int,      insertIndex int) (result []int, err error