效果是一样的,第二个if语句在判断时会立刻调用函数并且将函数返回值返回到函数调用处,第一个只不过是你把返回值赋值给了一个变量。
我们提供的服务有:成都做网站、网站设计、微信公众号开发、网站优化、网站认证、临沂ssl等。为1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的临沂网站制作公司
空格不算是空字符串,str=""这样的才算是空字符串,里面什么都没有,而str=" "是有内容了,这个str存储了一个字符(空格),如果你要把空格也算是空字符串,那么要稍作修改:
char str[] = " ";
int len = strlen(str), i = 0;
if (len 0)
{
while(i len str[i++] == ' ');
if (i len) // 字符串不空
else // 空字符串
}
这样定义:
int haveaspace(char *s)
{
int i;
for(i=0;s[i];i++)
if(isspace(s[i]))
return 1;
return 0;
}
这是一个使用这个函数的一个例子:
#include stdio.h
#include ctype.h
int haveaspace(char *s)
{
int i;
for(i=0;s[i];i++)
if(isspace(s[i]))
return 1;
return 0;
}
int main()
{
char s1[]="aaa1A+";
char s2[]="aaa1 1A+";
if(haveaspace(s1))
printf("%s包含空白字符\n",s1);
else
printf("%s不包含空白字符\n",s1);
if(haveaspace(s2))
printf("%s包含空白字符\n",s2);
else
printf("%s不包含空白字符\n",s2);
return 0;
}
就是用strlen(变量)==0来判断一个字符串是否为空,空格也是一个字符,字符串结束的标识符是'\0'
c语言如何判断为空可用读文件操作函数的返回值来判定,如:
函数: int fgetc(FILE *stream); //从参数stream 所指的文件中读取一个字符. 若读到文件尾而无数据时便返回EOF.
当以读方式打开文件后,第一次使用fgetc()就返回EOF,则表明文件是空文件。
参考代码:
#include stdio.h
void main()
{
FILE *fp;
int ch;
fp=fopen("新建文本文档.txt","r");
ch=fgetc(fp);
if ( ch==EOF )
printf("file is null\n");
else
printf("read a char : %c\n");
fclose(fp);
}
注:
EOF不是文件中的一个字符,而是一个标志,C中定义EOF为-1,可在stdio.h中查到。
读文件函数,如:fgetc()在读到文件尾而无数据时便会返回EOF。
空文档是指字节数是0的文档。如果文档中有字符,则不是空文档。
EOF就是文件尾的意思,一般被编译器定义为-1
倒不是说文件自己会自动生成一个EOF标志,而是你在用函数读入文件数据的时候,函数总会返回一个状态,是读取成功还是失败,那么这个状态怎么表示呢,所以就约定俗成定义一个标识符表示这个状态,就有了EOF,BOF等等