C语言取某个字符后的字符串存到另一个字符串

例如 Network Number: 58.154.16.0 - 58.154.31.255
Network Name: SYIAEC-CN
我要去这两行每行冒号后的字符串,分别存到另两个字符串中

思路:先遍历字符串,如果找到该字符后,把后面的所有字符复制到另一个字符串。

例如:

#include <stdio.h>
#include <string.h>
int main ()
{
char ch1[]="123456789",ch2[20],a='4';
int i=0,j=0;
while(ch1[i++]!=a);
while(ch1[i]){
ch2[j++]=ch1[i++];
}
ch2[j]='\0';
puts(ch2);
return 0;
}
/*
输出:
56789 
*/
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-14
#include<stdio.h>
#include<string.h> //支持strlen()的应用
#include<stdlib.h> //支持exit(1)
char *mcopy(char*s ,int m); //函数的定义
void main(void)
{
char str1[100];
char *str2;

int m;
printf("请输入你要输入的字符串\n");
gets(str1);
printf("请输入你要开始复制字符的位置m\n");
scanf("%d",&m);
if(m>=strlen(str1)) //若输入m值过大,结束程序
{
printf("输入值超出字符串长度...\n");
exit(1);
}
str2=mcopy(str1,m); //程序的调用
for(int j=0;j<strlen(str2);j++) //把数组进行输出
printf("字符串第%d个元素是%c\n",m++,str2[j]); //字符的输出
}
char *mcopy(char*s ,int m)
{
static char array[100];
int count=0;
for(int i=m-1;i<strlen(s);i++)
{
array[count]=s[i];
count++;
}
return array;
}
第2个回答  2011-03-03
#include <stdio.h>
void main()
{
char buf[200]="Network Number: 58.154.16.0 - 58.154.31.255\0",buf1[200];
int i=0;
while(buf[i]!=0&&buf[i]!=':') i++;
if(buf[i]==':') i++;
sprintf(buf1,"%s",buf+i);printf("[%s]",buf1);/*buf1就是:后面的内容*/
}
运行如下:
[ 58.154.16.0 - 58.154.31.255]
第3个回答  推荐于2017-12-15
代码如下。。。我测试过了。。。。
#include "stdio.h"
main()
{
char s1[] = "Network Number: 58.154.16.0 - 58.154.31.255";
char s2[] = "Network Name: SYIAEC-CN";
char result1[30];
char result2[30];
int i,j;
for(i = 0; i<strlen(s1);i++)
if(s1[i]==':'){
j = i+1;
break;
}

for(i=0;j<strlen(s1);i++,j++)
result1[i] = s1[j];
result1[i] = '\0';
puts(result1);

for(i = 0; i<strlen(s2);i++)
if(s2[i]==':'){
j = i+1;
break;
}

for(i=0;j<strlen(s2);i++,j++)
result2[i] = s2[j];
result2[i] = '\0';
puts(result2);
getch();
}

希望对你有帮助。。。。仍有问题可以HI我。。。。。追问

这样只有两个可以 如果我有多个这样的信息呢?而且假如是
Network Number: 58.154.16.0 - 58.154.31.255
Network Name: SYIAEC-CN
dajlfangnaldnga:
dadagag,
Network Number: 58.154.16.0 - 58.154.31.255
Network Name: SYIAEC-CN
这样的怎么办,不光这几行信息,还有好几十行

追答

Network Number:
Network Name:
提取的只是这两个后面的吗?其它的分号后面的还提取吗?

追问

对,只提取这两个后面的

本回答被提问者采纳
第4个回答  2011-03-05
#include <stdlib.h>
#include <string.h>
void main()
{
FILE *fp;
char buf[3][1024];
char *Input1=buf[0],*Input2=buf[1],*save=buf[2];
printf("请输入密码:\n");
scanf("%s",Input1);

fp=fopen("code.txt","w"); //以读写方式打开code.txt文件,如果没有文件就建立这个文件
fputs(Input1,fp); //将save里边的字符窜(即密码)写入code.txt文件中
printf("请再输入密码:\n");
scanf("%s",Input2);
fclose(fp);

fp=fopen("code.txt","r");
fgets(save,1024,fp);
fclose(fp);
if(strcmp(Input2,save)==0) //string.h 里边的函数
printf("success\n");
else
printf("error\n");
}
相似回答