h-b-z-d-j-s-m 发表于 2022-3-3 13:02:26

为什么i!='\0'就不可以

在键盘输入字符串123406,函数返回长整型数123406
第四行到十二行为填空,其余是原题目
想知道为什么第八行输入i!='\0'就不可以,输入i<strlen(s)就可以,这是为什么!
还有啊编写代码的时候定义一个字符指针
比如char *s
写的时候什么时候用*s
什么时候用是s?
#include   <stdio.h>
#include   <string.h>
void NONO();
longfun( char*s )
{
        int i,h=0;
        for(i=0;i!='\0';i++)
        {
                h=h*10+s-'0';
        }
        return h;
}
void main()
{chars;    longr;
   printf("请输入一个长度不超过9个字符的数字字符串 :");gets(s);
   r = fun( s );
   printf(" r = %ld\n" , r );
   NONO();
}

void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE *fp, *wf ;
int i;long r;
char s, *p;

fp = fopen("in.dat","r") ;
wf = fopen("out.dat","w") ;
for(i = 0 ; i < 10 ; i++) {
    fgets(s, 10, fp);
    p = strchr(s, '\n');
    if (p) *p = 0;
    r = fun(s);
    fprintf(wf, "%ld\n", r);
}
fclose(fp) ;
fclose(wf) ;
}

jhq999 发表于 2022-3-3 15:13:17

i!='\0';等价于i!=0;根本进入不了循环

大马强 发表于 2022-3-3 16:42:42

1、*s 是一个字符串指针,简单来说可以将其当作一个数组
函数for循环的条件要写成这样才对的
for(i=0;s!='\0';i++)

2、'\0' 就是 0,可以用这段代码验证
int main()
{
   printf(" '\\0' = %d\n" , '\0' );//\\将\ 转义
   return 0;
}
'\0' = 0
页: [1]
查看完整版本: 为什么i!='\0'就不可以