在主函数把45 行换成 46或47 这样的代码就会报错,不清楚是为什么,请高手解答。谢谢。
/* 查询字符串中最长数字的长度及数字 */ #include<stdio.h> #include<stdlib.h> #include<string.h> //查询字符串中最长数字的长度及数字 void findNum(char *str, char **ppos, int *length) { char *pstr = str; char *ptemp; int sum =0; while (*pstr != "\0") { //假如不是数字就跳过 while ((*pstr <"0" || *pstr>"9") && *pstr != "\0") { pstr++; } //记录查询到的数字 if (*pstr >= "0" && *pstr <= "9") { //pos:开始处 ptemp = pstr; int temp = 0; while (*pstr >= "0" && *pstr <= "9") { pstr++; temp++; } if (temp > sum) { sum = temp; //printf("*ppos:%p\n", *ppos); *ppos = memcpy(*ppos, ptemp, sum); //把查询到的内容拷贝到*ppos中 //printf("*ppos:%p\n", *ppos); } } } *length = sum; //记录最长字符的数值 } void main() { char str[] = "abc12356abc09876543210abc789q"; char des[50] = "0"; //des:是常量不能修改指向。 //num:保存字查询到的最长字符串 char *num = des; // 假如换成 char *num = "0"; 或 char *num = "0"; 都不可以呢? //char *num = "0"; 1:处 //char *num ; 2:处 int length ; //记录数字的长度 printf(" num:%p\n", num); findNum(str, &num, &length); printf("%s,%d\n", num, length); /*char *p = "0"; char a[10] = "123"; p = a; printf("%s\n", p);*/ system("pause"); }
解决方案
40
char *num=”0″ num指向的内容是常量,不能改
式子等同于 const char *p=”0″;
式子等同于 const char *p=”0″;