简单LinuxC程序关于倒置句子中的单词位置(指针的使用)
2017-07-17 19:36
405 查看
编写一个C函数,将句子中的单词位置倒置,而不改变单词内部结构。
例如:输入I am from shanghai,输出shanghai from am I。
要求:使用指针交换两个变量的值。
源代码如下:
#include <stdio.h>
#include <string.h>
#define MAX 100
//利用指针交换两个变量的值
int JiaoHuan(char *p1,char *p2)
{
char temp;
while (p1 < p2)
{
temp = *p1; //*取该地址表示的内存的值
*p1++ = *p2;
*p2-- = temp;
}
return 0;
}
int Rev(char str[])
{
int len;
len = strlen(str); //求字符串长度
str[len - 1] = '\0'; //将最后的换行符换为空字符,以去除换行
len--; //字符串长度减1
char *p1 = str; //指针p1指向字符串首
char *p2 = str + len - 1; //指针p2指向字符串尾
char *p3 = str; ////指针p1指向字符串首
JiaoHuan(p1,p2);
while (*p3++)
{
if (*p3 == ' ' || *p3 == '\0') //扫描到空格或字符串尾(空字符)就再次逆序,将单词恢复
{
p2 = p3 - 1;
JiaoHuan(p1,p2);
p1 = p3 + 1;
}
}
return 0;
}
int main()
{
char str[MAX];
printf ("input a string:");
fgets (str,MAX,stdin); //从键盘读入一个字符串
Rev (str);
printf("倒置后的结果:\n%s\n",str);
return 0;
}
解决这个问题有很多种办法,这一次我使用了指针,当然这只是指针的简单应用,指针是编程中非常重要也是非常有用的一个东西,但指针的理解和使用也比较复杂,我同样也不敢说完全掌握了指针。在这里只是提供了一个指针解决问题的例子,在以后的博客中,我会总结一下我对指针的理解,希望和大家多多交流。
例如:输入I am from shanghai,输出shanghai from am I。
要求:使用指针交换两个变量的值。
源代码如下:
#include <stdio.h>
#include <string.h>
#define MAX 100
//利用指针交换两个变量的值
int JiaoHuan(char *p1,char *p2)
{
char temp;
while (p1 < p2)
{
temp = *p1; //*取该地址表示的内存的值
*p1++ = *p2;
*p2-- = temp;
}
return 0;
}
int Rev(char str[])
{
int len;
len = strlen(str); //求字符串长度
str[len - 1] = '\0'; //将最后的换行符换为空字符,以去除换行
len--; //字符串长度减1
char *p1 = str; //指针p1指向字符串首
char *p2 = str + len - 1; //指针p2指向字符串尾
char *p3 = str; ////指针p1指向字符串首
JiaoHuan(p1,p2);
while (*p3++)
{
if (*p3 == ' ' || *p3 == '\0') //扫描到空格或字符串尾(空字符)就再次逆序,将单词恢复
{
p2 = p3 - 1;
JiaoHuan(p1,p2);
p1 = p3 + 1;
}
}
return 0;
}
int main()
{
char str[MAX];
printf ("input a string:");
fgets (str,MAX,stdin); //从键盘读入一个字符串
Rev (str);
printf("倒置后的结果:\n%s\n",str);
return 0;
}
解决这个问题有很多种办法,这一次我使用了指针,当然这只是指针的简单应用,指针是编程中非常重要也是非常有用的一个东西,但指针的理解和使用也比较复杂,我同样也不敢说完全掌握了指针。在这里只是提供了一个指针解决问题的例子,在以后的博客中,我会总结一下我对指针的理解,希望和大家多多交流。
相关文章推荐
- 简单LinuxC程序关于倒置句子中的单词位置(字符串逆序应用)
- 编写一个程序,输入一个英文句子,将其中单词位置倒置,单词内部结构不变。例如“I am from shanghai”倒置为“shanghai from am I”。
- 简单LinuxC程序关于简单计算器(函数指针与回调函数)
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库。
- 关于Linux驱动(应用)程序头文件使用
- 关于linux驱动(应用)程序头文件使用
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库。
- 关于linux驱动(应用)程序头文件使用
- 练习1-21 编写程序entab,将空格串替换成最少数量的制表符和空格,但要保持单词之间的间隔不变。假设制表符终止位的位置与练习1-20的detab程序的情况相同。当使用一个制表符或者一个空格都可以到达下一个制表符终止位时,选用哪种替换字符比较好。
- Linux下之使用简单3种创建文件的命令,并实现一个Html和JavaScript小程序
- 在Linux下如何使用GCC编译程序、简单生成 静态库及动态库。
- 关于使用Spring和hibernate开发web程序的配置说明和简单实例的详细说明
- Linux下使用pdb简单调试python程序
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库。
- 《Applications=Code+Markup》读书札记(2)——创建一个简单的 WPF 程序的代码结构及关于 Window 实例位置设置问题
- 关于linux驱动(应用)程序头文件使用
- 关于linux驱动(应用)程序头文件使用
- Linux下,使用C/C++编写一个简单的消息处理程序
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库
- Linux C语言函数指针的简单使用 [李园7舍_404]