C语言问题--关于string得去掉双引号 15
有个问题想请大家帮忙下,就是:初始时是给定一排东西的,里面有字母,有数字比如0123456789abcdefghij0123456789然后要用户输入命令,这里只考虑输入...
有个问题想请大家帮忙下,就是:
初始时是给定一排东西的,里面有字母,有数字
比如0123456789abcdefghij0123456789
然后要用户输入命令,这里只考虑输入insert的情况,
当用户输入其他时,显示出invaild command
市insert时,要用户输入位置和要插入的东西,
可以是字母或者数字,但前后是有双引号的
所以要求1,需要在main之外的 function中去掉双引号
比如"abc","123"
之后将abc或123插入到对应的位置中,
要求2,这个过程也要用到main之外的 function
谢谢
0123456789ABCDEFGHIJ0123456789
--------------------------------------------------------
Command: insert 1 "XYZ"
--------------------------------------------------------
0XYZ123456789ABCDEFGHIJ0123456789
--------------------------------------------------------
Command: insert 100 "XXX"
---------------------------------------------------------
0XYZ123456789ABCDEFGHIJ0123456789XXX
当插入位置大于一共的个数时,就插在最后
题目取错了,不好意思 展开
初始时是给定一排东西的,里面有字母,有数字
比如0123456789abcdefghij0123456789
然后要用户输入命令,这里只考虑输入insert的情况,
当用户输入其他时,显示出invaild command
市insert时,要用户输入位置和要插入的东西,
可以是字母或者数字,但前后是有双引号的
所以要求1,需要在main之外的 function中去掉双引号
比如"abc","123"
之后将abc或123插入到对应的位置中,
要求2,这个过程也要用到main之外的 function
谢谢
0123456789ABCDEFGHIJ0123456789
--------------------------------------------------------
Command: insert 1 "XYZ"
--------------------------------------------------------
0XYZ123456789ABCDEFGHIJ0123456789
--------------------------------------------------------
Command: insert 100 "XXX"
---------------------------------------------------------
0XYZ123456789ABCDEFGHIJ0123456789XXX
当插入位置大于一共的个数时,就插在最后
题目取错了,不好意思 展开
展开全部
#include "string.h"
insert(char a[],int n,char *p){
int j=strlen(a);
int i;
int m=0;
char b[30];
while(*p){ /*去掉字符串P中的“*/
if(*p!='"')
b[m++]=*p;
p++;
}
i=strlen(b);
if(n>j)/*如果N大于数组长度,查到最后*/
n=j;
for(m=j;m>=n;m--){ /*移动数组为插入字符串空出位置*/
a[m+i-1]=a[m-1];
}
for(m=0;m<i;m++){ /*插入字符串*/
a[m+n]=b[m];
}
}
main(){
char a[100]="0123456789";
char *p,*q;
int n;
while(1){
printf("Command:");
scanf("%s %d %s",p,&n,q);
printf("-------------------------------------------\n");
if(strcmp(p,"insert")!=0)
printf("invaild command\n");
else{
insert(a,n,q);
printf("%s\n",a);
}
printf("-------------------------------------------\n");
}
}
insert(char a[],int n,char *p){
int j=strlen(a);
int i;
int m=0;
char b[30];
while(*p){ /*去掉字符串P中的“*/
if(*p!='"')
b[m++]=*p;
p++;
}
i=strlen(b);
if(n>j)/*如果N大于数组长度,查到最后*/
n=j;
for(m=j;m>=n;m--){ /*移动数组为插入字符串空出位置*/
a[m+i-1]=a[m-1];
}
for(m=0;m<i;m++){ /*插入字符串*/
a[m+n]=b[m];
}
}
main(){
char a[100]="0123456789";
char *p,*q;
int n;
while(1){
printf("Command:");
scanf("%s %d %s",p,&n,q);
printf("-------------------------------------------\n");
if(strcmp(p,"insert")!=0)
printf("invaild command\n");
else{
insert(a,n,q);
printf("%s\n",a);
}
printf("-------------------------------------------\n");
}
}
展开全部
自己写了个,不知道合题意不
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
void insert(int pos, char const* sur);
char a[] = "abcdefghijk";
char dest[256];
int main(void)
{
int position;
char in[256];
cin >> position;
cin >> in;
insert(position, in);
cout << dest << endl;
return 0;
}
void insert(int pos, char const* sur)
{
int len = strlen(sur);
int a_len = strlen(a);
if(pos > a_len)/*当插入位置大于一共的个数时,就插在最后 */
pos = a_len;
strncpy(dest,a,pos);
strcpy(dest + pos , sur);
strcpy(dest + pos + len ,a+pos);
}
#include <iostream>
#include <string>
#include <stdio.h>
using namespace std;
void insert(int pos, char const* sur);
char a[] = "abcdefghijk";
char dest[256];
int main(void)
{
int position;
char in[256];
cin >> position;
cin >> in;
insert(position, in);
cout << dest << endl;
return 0;
}
void insert(int pos, char const* sur)
{
int len = strlen(sur);
int a_len = strlen(a);
if(pos > a_len)/*当插入位置大于一共的个数时,就插在最后 */
pos = a_len;
strncpy(dest,a,pos);
strcpy(dest + pos , sur);
strcpy(dest + pos + len ,a+pos);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询