编程练习:网址转换

在论坛里看见一道笔试题目:

 

函数实现将网址进行如下操作:www.google.com转成com.google.www 及mail.netease.com转成com.netease.mail 

不允许用STL,空间为0(1)

 

 

//函数实现将网址进行如下操作 //www.google.com转成com.google.www 及mail.netease.com转成com.netease.mail // //不允许用STL,空间为0(1) #include <stdio.h> #include <string.h> #include <stdbool.h> void swap_char(char *a, char *b) { char temp; temp = *a; *a = *b; *b = temp; } void reverse(char *s, size_t length) { int i = 0, j = length-2; int pos = -1;//记录'.'或者'/0'出现的位置 while(i < j) { swap_char(s+i, s+j); ++i; --j; } while(true) { i = ++pos; while(s[pos] && s[pos] != '.') ++pos; j = pos-1; while(i < j) { swap_char(s+i, s+j); ++i; --j; } if(s[pos] == '/0') return; } } int main() { char a[] = "www.google.com"; char b[] = "mail.netease.com"; reverse(a, sizeof(a)/sizeof(char)); reverse(b, sizeof(b)/sizeof(char)); printf("%s/n",a); printf("%s/n",b); return 0; }  

 

写程序时候,犯了一个严重错误。在main函数中声明字符串“www.google.com”时,使用了char*指针:

char *a = “www.google.com”;

而不是数组形式:

char a[] = "www.google.com";

导致在调用swap对网址进行翻转的时候,总是出现运行时错误。倒腾了半天,也没有找到错误原因。后来发帖求助,才解决了问题。

这是第一次CSDN发论坛帖,想不到几分钟的时间内,就有人指出了上述错误,多谢网友

 

另外网址:http://www.cnblogs.com/chenleiustc/archive/2011/04/08/2009994.html

详细介绍了“c/c++里的 堆区 栈区 静态区 文字常量区 程序代码区”,很不错的一篇文章,推荐一下。

 

你可能感兴趣的:(编程)