请问这个程序哪里出了问题?
#include<stdio.h>
#include<string.h>
int main()
{
char str[100],c[100],*p=str,*q=c;
int l;
printf("请输入一个字符串\n");
scanf("%s",p);
l=strlen(str);
for(p=str;p<p+l;p++)
if(*p>='A'&&*p<='Z')
*(q++)=*p;
*q='\0';
q=c;
printf("字符串中的大写字符有\n");
printf("%s\n",q);
return 0;
}
int main()
{
char str[100], c[100], *p, *q; //先定义指针
p = str, q = c; //这样赋值
int l;
char *p_end; //用end
printf("请输入一个字符串\n");
gets_s(str); //可以试试用gets()函数
l = strlen(str);
printf("%d\n", l);
p_end = p + l;
for (p = str; p < p_end; p++) //这里如果你用p<p+1的话,p一直在变,p永远小于p+1,循环出不去
if (*p >= 'A'&&*p <= 'Z')
{
*q = *p; //这样赋值
q++; //赋值后把指针p后移
}
*q = '\0';
//q = c; (这一步不需要)
printf("字符串中的大写字符有%s\n");
printf("%s\n", c); //应该输出字符串c而不是指针q
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632