C语言关于strlen的问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 17:43:30
今天上机考试,做完之后总是说由一个警告,怎么也找不出来,最后用书发现书上是这样写的
int str1;
str1=xx[i];
for(j=0;j<str1;j++)
我是这样写的for(j=0;j<strlen(x[i]);j++)
没有说明是strlen()是int 型,这样做的结果对吗??
写错了,书上是这样写的
int str1;
str1=strlen(x[i])
x[i]是字符数组,这样结果对吗?

strlen()是求一个字符串的长度的函数,返回值是一个int型,所以strlen()的参数应该是一个字符串,通常是个字符数组,如:
char x[100]="abcde";
int a;
a=strlen(x); //此时a的值为字符串x的长度,即5
而你写的代码“j<strlen(x[i])”中,x[i]是不是一个数组元素?若是,则给错了strlen()的参数,所以会有警告

对的 没事

strlen的原型是extern int strlen(char *s),从你的上下文看x[i]的类型是char,char到char *的转换是不安全的

strlen()
这是个字符串函数嘛,来处理字符串的,所以()的参量一定是个字串

完全可以

书搞错了吧,除非x[i]是一个字符串
就是定义是这样
char* x[10];