早教吧 育儿知识 作业答案 考试题库 百科 知识分享

C语言判断回文--用指针指做while参数的问题。#include<stdio.h>#include<string.h>#defineN100intfun(char*p)//传入字符串的首地址{char*q;q=p;//使p和q同时指向字符串的首地址while(*q){q++;/

题目详情
C语言判断回文--用指针指做while参数的问题。#include <stdio.h> #include <string.h> #define N 100 int fun(char *p) //传入字符串的首地址 { char *q; q = p; //使p和q同时指向字符串的首地址 while(*q) { q++;//使q指向字符串的结束标志'' } q--; //使q指向字符串的最后一个字符,而不是结束标志 while(p<q) { if(*p!=*q) //判断首尾字符是否相等,如果不相等则说明不是回文串 return 0; p++;//p和q同时向字符串的中间移动 q--; } return 1; } int main(void) { char ch[N]; printf("请输入一个字符串:"); gets(ch); //使用gets可以接受带空格的字符串 if(fun(ch)) printf("是回文串\n"); else printf("不是回文串\n"); return 0; } 源程序在上面, 我想问的就是这里,while(*q)如果*q指向的字符串里有一个是0,当指针指向0的时候 这个循环不久结束了么?为什么还能找到'\0'.希望高人指点~
▼优质解答
答案和解析
‘0’的ascii码和'\0'的ascii码不一样 空格的ascii码和'\0'的ascii码也不一样 字符或者字符串指针貌似只遇到'\0'结束