一个有关于C/C++的问题,具体请看下面:

我再回答别人的问题时,自己遇到了一个问题
------
请先看那个问题描述:
请问若我们只知道 要输出几个,不要用FOR循环,是否有这样的语法让它输出, 比如 i 是 5,那么我想输出指针后面的 5个字符,不知道怎么输出,能用指针输出一串字符中第4 到第 6个字符吗?
------
请先看我的回答,代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n,m;
char ch;
char s[100];
char *p;
printf("请输入字符串:");
gets(s);
system("cls");
p=s;
printf("\n\t----------\n\t提示:\n\t");
printf("您要查询第n个到第m个字符\n\t请先输入n,再输入m");
printf("\n\t比如有一串字符qwerrt,您输入1 3,则结果为qwe\n");
printf("\t是否明白提示?是请按enter键确认");
ch=_getch();
if(ch=='\r')
{
system("cls");
printf("\n请输入要查询的范围(即n和m的值)");
scanf("%d%d",&n,&m);
printf("\n-------------\n结果为:");
loop:
if(n<=m)
{
printf("%c",*(p+n-1));
n++;
goto loop;
}
printf("\n---------\n这是您之前输入的字符串:");
puts(s);
}
else
printf("\n---------\n您的输入有误\n");
return 0;
}

--------------
我的问题

我这个程序显然有一个BUG
比如,当我输入abcdef 6个字符后
我要求输出第8到第9个字符,这显然办不到,于是计算机会胡乱给一个随机数

我的想法是

输入字符时记录自己的输入
但问题在于
我利用gets()来输入字符串,这根本没法记录

---------
请问高手,怎么记录gets()输入的字符?

已经经过调试可以通过

#include <iostream>
#include <stdlib.h>
#include <cstring>
using namespace std;

int main()
{
int n,m;
char ch;
char s[100];

cout << "请输入字符串:";
cin.getline(s, 100, '\n');

system("cls");
cout << "\n\t----------\n\t提示:\n\t";
cout << "您要查询第n个到第m个字符\n\t请先输入n,再输入m"<<endl;
cout << "\n\t比如有一串字符qwerrt,您输入1 3,则结果为qwe\n" << endl;
cout << "\t是否明白提示?是请按 y 或 Y 键确认" << endl;
cin.get(ch);
if(ch=='y' || ch=='Y')
{
system("cls");
cout << "\n请输入要查询的范围(即n和m的值)" << endl;
cout << "请输入初始位置:" << endl;
cin >> n;
cout << "请输入结束位置:" << endl;
cin >> m;
cout << "\n-------------\n结果为:" << endl;

for(int i=n; i<m; i++)
cout << s[i];
cout << "\n---------\n这是您之前输入的字符串:" << endl;
cout << s << endl;
}
return 0;
}追问

谢谢你

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-02
strlen()函数获取字符串长度啊
再判断输入的n和m的合法性就ok了追问

具体怎么做呢?能否写个代码?我不会
请指教

追答

最近比较忙,比较忙 我的时间都不够 自己查函数用法吧 百度,你懂的

第2个回答  2012-05-02
你的意思是输入一个字符串,然后指定字符的位置从哪到哪的位置比如"12345678" 输入2和5就输出2和5中间的字符么追问

我上面的代码已经解决了查找字符的问题
我想问的是:怎么记录gets()输入的字符,
比如:输入qwerty,程序能够记录输入了6个字符
【注:我所指的是gets()中输入字符串,记录字符数量,别的情况我自己会】
请高手指教。

追答

gets()的返回值本身就是CHAR * 也就是可以定义一个数组接收

第3个回答  2012-05-02
用 strlen ()
或是 string-length追问

具体怎么做呢?能否写个代码?我不会
请指教

第4个回答  2012-05-02
用 strlen ()或 string-length 限定n,m取值追问

具体怎么做呢?能否写个代码?我不会
请指教

追答

char *str;
scanf ("%s", str);
int len = strlen(str), i = 0;
if ()
{
}
if括号里输入字符长度限制条件,下来符合条件就运行循环,就是一个判断不为空就怎样,接下来判断是否否和字符长度,接着就循环
上边不行试下这个
void main()
{
char str[100];
int len, i = 0;
gets (str);
len = strlen(str);
if

本回答被提问者采纳
相似回答