int isEmpty(char x [1000]){
int i = 0;
while( x[i] == " " || x[i] == "/t" || x[i] == ""){
i++;
}
if (i != 999)
return 1;
}
return 0;
}
我收到的错误:
警告:指针和整数之间的比较
警告:与字符串文字进行比较会导致未指定的行为
我意识到我的代码读取的内容与Java类似,我还没有完全掌握C语法。
答案 0 :(得分:5)
问题是您使用字符串文字表达char
值。不要使用双引号"
包围它们,而是使用单引号'
while( x[i] == ' ' || x[i] == '\t' ) {
其他一些问题。
\t
而不是/t
。前者是制表符,后者是两个字符""
尝试了什么。也许是\0
答案 1 :(得分:2)
由于您要与字符常量进行比较,因此您需要使用单引号而不是双引号:
x[i] == ' '
双引号用于"foo"
等字符串常量。所以"\n"
是一个带有单个char的字符串文字,'\n'
是一个char常量。
答案 2 :(得分:0)
' '
(单引号)中。\t
&标签字符不是/t
。""
删除案例(相当于NULL
)。答案 3 :(得分:0)
除了之前的答案,我认为
NULL (\0)
中找到x
,检查是否会继续?我认为答案可能是:否。(i != 999)
部分不清楚。不是(i == 1000)
吗?这是我的版本:
/* return 1 when c is considered empty, 0 otherwise */
int isEmptyChar( const char c ) {
return c == ' ' || c == '\t';
}
enum { N = 1000 };
/* return 1 when x is considered empty, 0 otherwise */
int isEmptyString( const char x[ N ] ) {
for( int i = 0; i < N; i++ ) {
if( x[ i ] == '\0' ) {
break; /* stop, if NUL termination is found */
}
if( ! isEmptyChar( x[ i ] ) ) {
return 0; /* early return if non-empty char is found */
}
}
return 1;
}
答案 4 :(得分:0)
int isEmpty(const char *x)
{
return EOF==sscanf(x,"%*s");
}
也应该做你想要的,是C89并为你测试空白。