学C语言的朋友们,帮我修改一下这个题,问题出在哪里啊?
/*编制函数FUN,起功能是删除一个字符串中指定的字符。要求原始字符串在主函数中输入,处理后的字符串在主函数中输出? */ #define N 100 void fun (char s[],char c) { char *p; int i=0; p=s; while (*(p+i)!=c) { *(s+i)=*(p+i); i++; if (*(p+i-1)!='\0') break; } } main() { char s[N],c; printf("请输入字符串:\n"); gets(s); printf("删除哪个字符?\n"); scanf("%c",&c); fun (s,c); puts(s); getch(); } 注意是修改不是重做,另外告诉我我错在哪啊? 谢谢了~
fun函数应该做如下修改 void fun (char s[],char c) { char *p; int i=0,j=0; p=s; while (*(p+i)!='\0') { if(*(p+i)!=c) {*(s+j)=*(p+i);j++;} i++; } s[j]='\0'; } 加上一个变量j,用它来控制数组s的下标,因为如果等于给定的字符,是应该删除的,所以数组s和p不应该用同一个下标来控制,否则就把p中的所有字符都复制到s中了,起不到删除的作用了。
必须重做, 而不是修改.因为你错得太多. 1. while (*(p+i)!=c) 这样一来只能找出一个. 如果有两个? 2. Pointer p=s; pointer to s 你只用了一个pointer,应该用两个. 3. pointer + 1 应该是 p++, 而你 p+i, i++.这不是错,但不是pointer的用法 void fun (char s[],char c) { char *p; int i=0; p=s; while (*(p+i)!=c) { *(s+i)=*(p+i); i++; if (*(p+i-1)!='\0') break; } }
答:?Φ难剑艺{?了一下,?]錯呀。 这是截图: 我想有可能是你的C语言编辑器问题,我用了Microsoft Visual Studio 2005和MinGW D...详情>>
问:挺简单的一C函数,不过我是初学者,暂时还不会写,请好心人多多帮忙!
答:int mystrlen(char *str) { int n = 0; while (*str) { n++; str++;} return n; } voi...详情>>