C语言编程:sprintf(chr,"%s",a[1]);字符数组输出的问题

如:char*a[10];charchr[50];a[0]="mscong(1)";a[1]="abolg(2)";sprintf(chr,"%s",a[1]);这样输出... 如:char* a[10];char chr[50];

a[0]="mscong(1)";
a[1]="abolg(2)";
sprintf(chr,"%s",a[1]); 这样输出是 abolg(2);
怎样才能只输出abolg呢?就是输出把“(2)”去掉。
展开
 我来答
tattackor
2015-11-01 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:895万
展开全部
1、字符数组输出的时候,应该传入字符组首地址。sprintf(chr,"%s",a);才正确。
2、sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。
sprintf 是个变参函数,定义如下:
int sprintf( char *buffer, const char *format [, argument] ... );
除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:
格式化字符串上。
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
金色潜鸟
2013-05-10 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5732万
展开全部
如果你知道位置:
sprintf(chr,"%s",a[1]); chr[5]=0; printf("%s\n",chr); 只输出abolg

如果你寻找小括号位置abcdolg(2):
int i;
for (i=0;i<strlen(chr);i++) if (chr[i] =='(' ) {chr[i]=0;break;};
printf("%s",chr); 只输出abcdolg
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友83cdc1c
2013-05-09 · TA获得超过5792个赞
知道大有可为答主
回答量:1907
采纳率:100%
帮助的人:857万
展开全部
你的目的是把括号前的字符串保存到chr数组里,那用sprintf是达不到目的的。
你可以先把整个字符串复制到chr,然后找到‘(',把它替换成’\0'就可以了。
char *cp;
strcpy(chr, a[0]);
cp = strchr(chr, '(');
if(cp)
*cp='\0';
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
neusoft_monk
2013-05-09 · TA获得超过2130个赞
知道小有建树答主
回答量:469
采纳率:75%
帮助的人:129万
展开全部
#include<iostream>
#include <stdio.h>
using namespace std;

int main()
{
char* a[10];char chr[50];
memset(chr, 0, sizeof(chr));
a[0]="mscong(1)";
a[1]="abolg(2)";
_snprintf(chr,5,"%s",a[1]);
cout << chr;
return 0;
}
追问
可是我本来不知道a[1]="abolg(2)";这值是提取出来的,提取出来的值不同,所以不确定其位数,这要怎么办呢?
谢谢了!
追答
#include
#include
#include

using namespace std;

int main()
{
char* a[10];char chr[50];
memset(chr, 0, sizeof(chr));
a[0]="mscong(1)";
a[1]="abolg(2)";
char * strFind = "(";
char * pos= find_first_of(a[1], a[1] + strlen(a[1]), strFind, strFind + strlen(strFind));
_snprintf(chr,pos - a[1],"%s",a[1]);
cout << chr;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_whales
2013-05-10 · TA获得超过2279个赞
知道大有可为答主
回答量:1814
采纳率:85%
帮助的人:509万
展开全部
sprintf(chr,"%5s",a[1]);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式