题目为输入一段文本,分离出单词(以字母开头的由字母数字组成的字符序列)
例如:
88a123*.**abcd\;123a123,-xs1s
分离出单词为
a123
abcd
a123
xs1s
我的程序
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define CNUM 10
#define NNUM 20
#define MAX 50
int main()
{
char ch[MAX];
char memo[CNUM][NNUM];
char *pst;
int chon = 1;
int a = 0,b = 0;
int x = 1;
gets(ch);
pst = ch;
while(*pst != '\0')
{
if(isalpha(*pst))
{
chon = 0;
memo[a][b] = *pst;
b++;
pst++;
}
else if(isdigit(*pst) == 1 && chon == 0)
{
memo[a][b] = *pst;
b++;
pst++;
}
else
{
if(chon == 0)
{
chon = 1;
a++;
b = 0;
pst++;
}
else
pst++;
}
}
for(x = 0;x <= a;x++)
{
puts(memo[x]);
putchar('\n');
}
system("pause");
}
输出的结果很奇怪,请问是哪里的问题,说明原因,可能的话帮忙修改下程序
个人觉得可能应该不是指针的问题
谢谢!
C语言题的一个问题
答案:1 悬赏:60 手机版
解决时间 2021-05-23 01:13
- 提问者网友:低吟詩仙的傷
- 2021-05-22 21:48
最佳答案
- 五星知识达人网友:执傲
- 2021-05-22 21:53
改了几个地方,其实都是为了一个目的,给串的最后加上'\0',具体修改的地方标记出来了,有问题hi我
还有一个小问题,isdigit(*pst)当是数字时返回值不是1,而是4
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define CNUM 10
#define NNUM 20
#define MAX 50
int main()
{
char ch[MAX];
char memo[CNUM][NNUM];
char *pst;
int chon = 1;
int a = 0,b = 0;
int x = 1;
gets(ch);
pst = ch;
while(*pst != '\0')
{
if(isalpha(*pst))
{
chon = 0;
memo[a][b] = *pst;
b++;
pst++;
}
else if(isdigit(*pst) && chon == 0) //返回值不是1,而是4
{
memo[a][b] = *pst;
b++;
pst++;
}
else
{
if(chon == 0)
{
memo[a][b]='\0'; //1111111
chon = 1;
a++;
b = 0;
pst++;
}
else
pst++;
}
}
if(chon == 0) //2222222222222222
memo[a][b]='\0';
for(x = 0;x <= a;x++)
{
puts(memo[x]);
putchar('\n');
}
system("pause");
}
还有一个小问题,isdigit(*pst)当是数字时返回值不是1,而是4
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define CNUM 10
#define NNUM 20
#define MAX 50
int main()
{
char ch[MAX];
char memo[CNUM][NNUM];
char *pst;
int chon = 1;
int a = 0,b = 0;
int x = 1;
gets(ch);
pst = ch;
while(*pst != '\0')
{
if(isalpha(*pst))
{
chon = 0;
memo[a][b] = *pst;
b++;
pst++;
}
else if(isdigit(*pst) && chon == 0) //返回值不是1,而是4
{
memo[a][b] = *pst;
b++;
pst++;
}
else
{
if(chon == 0)
{
memo[a][b]='\0'; //1111111
chon = 1;
a++;
b = 0;
pst++;
}
else
pst++;
}
}
if(chon == 0) //2222222222222222
memo[a][b]='\0';
for(x = 0;x <= a;x++)
{
puts(memo[x]);
putchar('\n');
}
system("pause");
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯