字符串怎么截取第n个字节到第m个字节的字符串

如题所述

第1个回答  2011-08-24
#include "stdio.h"
#include "string.h"
main()
{
int n,m;
char s1[100];
printf("输入字符串:\n");
gets(s1);
printf("请输入n , m:\n");
scanf("%d %d",&n, &m);
char s2[m-n];
for (int i=0;i<m-n;i++)
{
s2[i]=s1[i+n];//s2即为所求
}

}

也可以单独写一个方法
char *fun(char s1[],int n,int m){
char s2[m-n];
for (int i=0;i<m-n;i++)
{
s2[i]=s1[i+n];//s2即为所求
}
return s2;
}
用的时候调用fun()方法就行

JAVA你投错版了,不早说
java更简单
String str1="0123456789";
int n=4,m=8;
String str2=str1.substring(n,m);
System.out.println(str2);
//可以得到 4567
//注意String的第一个字符是从0开始取,取到m的前一位追问

我要的是从第n个字节开始截到第m个字节结束,不是下标nm

追答

算不算第m个字节?
n=4;
m=8;
不算就是str2=str1.substring(n-1,m-1);//得到"3456" ‘3’是第4个字节,6是第7个字节
算就是 str2=str1.substring(n-1,m);//得到“34567” ‘3’是第4个字节,‘7’是第8个字节

追问

你这个是下标索引,不是字节数,我自己弄出来了,不过还是谢谢你!

追答

这个str2求出来有什么不对的么?还要把每个字符按ASCll码分解成字节取么?那数据取出来怎么用啊?

第2个回答  2011-08-24
已经测试通过

public class SplitIt {
public static void main(String[] args) {
String str = "我ABC汉DEF";
int a = 6;
excute(str,a);
}
private static void excute(String str, int a) {
String temp = "";
int k = 0;
for (int i = 0; i < str.length(); i++) {
byte[] b = (str.charAt(i) + "").getBytes(); //每循环一次,将str里的值放入byte数组
k = k + b.length;
if (k > a) { //如果数组长度大于6,随机跳出循环
break;
}
temp = temp + str.charAt(i); //拼接新字符串
}
System.out.println(temp);
}
}
第3个回答  2011-08-25
已经测试通过

public class SplitIt {
public static void main(String[] args) {
String str = "我ABC汉DEF";
int a = 6;
excute(str,a);
}
private static void excute(String str, int a) {
String temp = "";
int k = 0;
for (int i = 0; i < str.length(); i++) {
byte[] b = (str.charAt(i) + "").getBytes(); //每循环一次,将str里的值放入byte数组
k = k + b.length;
if (k > a) { //如果数组长度大于6,随机跳出循环
break;
}
temp = temp + str.charAt(i); //拼接新字符串
}
System.out.println(temp);
}
}
第4个回答  2011-08-24
哦,如果是CString,那么就是CString s="it. is soeasy";s.Mid(n,m)
第5个回答  2011-08-24
输入字符串:
123456789
输入n , m:
3 8
345678
Press any key to continue

#include "stdio.h"
#include "string.h"
main()
{
int i,n,m;
char aa[100];
printf("输入字符串:\n");
gets(aa);
printf("输入n , m:\n");
scanf("%d %d",&n, &m);
for (i=n-1;i<m;i++)
{
printf("%c",aa[i]);
}
printf("\n");
}追问

在java中

追答

百度知道 > 电脑/网络 > 程序设计 > C/C++
你问题可是在 这个分类 啊

逻辑都是相通的 你就改改关键字就OK了

本回答被网友采纳
相似回答