C语言,如何输出两个指针间的字符串

一个指向头,一个指向尾。有什么比较方便的方法的。
忘记了。额。。
for(i=0;i<=p-q;i++)
printf("%c",*(q+i));

有三种方法可供使用。

为方便描述,以下设定两个指针分别为char *类型的p1和p2,其中,p1<p2。


1 按字节输出。

使用putchar从*p1一直输出到*p2。样例代码如下:

while(p1<p2)
{
    putchar(*p1++);
}


2 将p2位置作为字符串结束点,临时赋值为0,并在输出后恢复。

示例代码如下:

char t = *p2;//临时变量
*p2 = '\0'; //赋值结束符
printf("%s",p1);//输出
*p2 = t; //恢复


3 开辟一段内存,将需要输出的内容复制进去,然后再输出,不改变原本的p1,p2值。

示例代码如下:

char *t;
int len = p2-p1;
t = (char *)malloc(len+1);//注意留一个空间给结束符
memcpy(t,p1m len);
t[len] = '\0';
printf("%s", t);
free(t);
t = NULL;来自:求助得到的回答
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-28
尾指针减去头指针就是字符的长度len,你在用:
for(int i=0;i<len;i++)
cout<<*(p+i);来自:求助得到的回答本回答被提问者采纳
第1个回答  推荐于2017-09-28
把指向尾巴的指针的值改成'\0',再printf输出头指针就行了

C语言,如何输出两个指针间的字符串
1 按字节输出。使用putchar从*p1一直输出到*p2。样例代码如下:while(p1<p2){ putchar(*p1++);} 2 将p2位置作为字符串结束点,临时赋值为0,并在输出后恢复。示例代码如下:char t = *p2;\/\/临时变量*p2 = '\\0'; \/\/赋值结束符printf("%s",p1);\/\/输出*p2 = t; \/\/恢复 3 开辟一...

C语言如何在两个函数之间传送字符串
用指针,例如:include <stdio.h> include <stdlib.h> include <string.h> void abc(char *str){ strcpy(str,"string from abc\\0");};void def(char *str){ printf("print in def: %s\\n",str);};main(){ char str[30];abc(&str[0]);def(&str[0]);exit(0);} \/\/ abc()...

c语言中如何借用指针输出字符串?
使用指针输出字符串有以下几种方式:1、使用printf 函数进行输出,其使用的格式转换符为%s,如 char *str = "test";\/\/指针指向一个字符串 printf ("%s\\n", str);\/\/输出str指向的字符串 2、使用puts函数进行输出,如 char *str = "test";puts(str);\/\/输出str指向的字符串,会自动多输出一...

用字符指针函数输出这两个字符之间的字符串
在字符串中找到第一字符的位置;再找到第二个字符的位置;用strncpy把这一段拷贝到一个新的字符串中;把字符串返回 你这个程序的问题就是,在子函数中声明的局部变量char a[80];,在函数返回时系统就自动释放了。所以你在主程序中用p接收到的,是一个无效的地址。两个解决办法:1、那个char a[80...

C语言:将两个字符指针的内容交换
已经给出了主函数,用子函数swap来实现:将s1,s2两个字符串的内容交换,输出123,abcinclude<stdio.h>voidswap(char*x,char*y){}main(){char*s1="abc",*s2="123";swap(s1,s2);printf(... 已经给出了主函数,用子函数swap来实现:将s1,s2两个字符串的内容交换,输出123,abcinclude <stdio.h>void swap(...

c语言编程 要用指针把两个字符串连接起来, 我这么编的不知道哪错了...
语法有错误,可以按照如下方法实现用指针把两个字符串连接起来:1、第一步,创建一个新项目和.c文件,见下图,转到下面的步骤。2、第二步,执行完上面的操作之后,定义变量类型,见下图的代码,转到下面的步骤。3、第三步,执行完上面的操作之后,调用cpy函数,见下图的代码,转到下面的步骤。4、第四...

c语言中如何输入输出字符串
在C语言中,输入输出字符串有以下两种方式:1 用scanf\/printf输入输出。scanf\/printf是C语言的格式化输入输出函数,可以用于输入输出各种基础类型,字符串(char*)也 其支持范围内。格式化字符为%s。定义 char str[100];输入 scanf("%s",str);输出 printf("%s",str);2 C语言还支持专门的字符串输入...

C语言中如何用指针复制字符串
{ char str1[30] = "hello,string copied!\\n";char str2[30];printf("str2[30]=%d\\n", copystring(str1, str2)); \/\/ 你的copystring函数需要的参数是两个字符型指针,而数组名本身就可以作指针来使用,&str1[30]指的是字符数组str1中第31(从0开始,这里实际上越界了)个元素的地址 ...

...defg","hijkl"};怎么把大括号里的字符串全部打印出来?
(p+2)相当于维数组a[6]="defg";*(p+2)=a;想获取f可以用表达式*(*(p+1)+2),或者p[1][2],其实是一样的;但是我觉得你这种定义不能通过编译的,二维数组初始化的时候可以用大括号,指针只能指向指定的内存,你定义char **这种类型就算定义成功了那p+1又该指向哪儿?这个是一个很纠结的...

ptrdiff_t程序示例
以下是一个简单的C语言程序示例,展示了如何使用ptrdiff_t类型来计算两个指针之间的差值。在这个例子中,我们将使用字符串"Hello world!"进行演示。首先,我们包含了三个头文件:<stdio.h>用于输入输出,<stddef.h>包含size_t和ptrdiff_t类型,以及<string.h>,用于处理字符串操作。在程序的主体部分,...

相似回答