一些被我忽略的问题(字符串指针)
来源:互联网 发布:搜索引擎优化方法 编辑:程序博客网 时间:2024/05/16 10:52
昨天2个二级C语言指针问题把我问到了,重新审视了下自己,C语言真心菜啊,连灵魂都没掌握!!!!发此文查漏补缺。
两段代码如下,目的是对字符串进行排序。
#include <stdio.h> #include <string.h>void main(){ FILE *p; char *s="634,.%@\\w|sq2",c; int i,j,k,n=strlen(s); p=fopen("Design2.dat","w"); for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if( *(s+j)<*(s+i) ) {c=*(s+i); *(s+i)=*(s+j); *(s+j)=c; } for(i=0;i<n;i++) fputc(s[i],p); fclose(p); }
二:
#include <stdio.h>#include <string.h>void main(){ //FILE *p; int i,j,k,n=strlen(s); // p=fopen("Design2.dat","w"); for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if( *(s+j)<*(s+i) ) {c=*(s+i); *(s+i)=*(s+j); *(s+j)=c; } for(i=0;i<n;i++) printf("%c",s[i]); //fputc(s[i],p); //fclose(p); }
上面那段程序是不能运行的,改了很多,最后索性把指针全部改成数组,可以用了.又改改只剩下定义时还是数组,其他部分改回指针。
后来问了下芒果(ym啊,无所不能),发现一个被我忽略的问题:
char *s={"634,.%@\\w|sq2"}
这样定义是错误的、、、因为没有分配空间。
换成char s[]={"634,.%@\\w|sq2"}好了
相应的对于另一个问题还放到了,论坛里求教过(第一次发论坛..^_^),也类似
#include <stdio.h>main(){ int i, j; char ch, *p1, *p2, *s[4]={"four","hello","peak","apple"}; for(i = 0; i < 4; i++) { p1 = p2 = s[i];//把p1,p2当做地址交换?? ch = *(p1 + i); while(*p1 != '\0') { if(*p1 != ch) { *p2 = *p1; p2++; } p1++; } *p2 = '\0'; } for(i = 0; i < 4; i++) printf("%s\n", s[i]);}
*s[4]={"four","hello","peak","apple"};
问题出在这里,同养的,没有分配空间。。。。囧
- 一些被我忽略的问题(字符串指针)
- android一些容易被忽略的问题
- Duilib 一些可能被忽略的问题
- 一些字符串与指针的小问题
- java容易被人忽略的一些小问题
- 一些经常被忽略的细节性问题(一)
- 一些被忽略的CSS
- 常被人忽略的一些语法问题
- string容易忽略的一些问题
- 【java】一些容易忽略的问题
- string容易忽略的一些问题
- 被我忽略的知识点
- 困扰我很久的字符串和指针的问题
- 忽略HTML标签的字符串替换问题
- 困扰我很久的 字符串常量指针问题
- 指针的一些问题
- 关于数组指针,指针数组和字符串数组的一些问题
- 关于字符串指针的一些问题及字符串的左旋转代码
- struts2中配置普通的servlet引发的思考
- TC2.0
- Java排序汇总
- 脚本指南
- Struts2与excludePattern
- 一些被我忽略的问题(字符串指针)
- Y Combinator Is Boot Camp for Startups
- 苹果中国应用商店改为人民币结算 可网银充值
- GDB 调试演示
- MVC与模板概念的理解
- 使用HTML5、CSS3和jQuery增强网站用户体验
- 一步一步写算法(之)
- 美国社会的自信
- 判断一个类是不是另一个类的子类