兄弟来学习 发表于 2020-3-9 15:22:29

字符串的输入问题

#include<stdio.h>
int main()
{
   int a,b,c,d;
   int i=0;
   char *p;
   scanf("%s",p); //换成gets(p)和fget(p,10,stdin)有什么区别?还等同于char p getchar()吗
   while(*p!='\0')
   {
   if(*p>='a'&&*p<='Z'||*p>='a'&&*p<='z')
   a++;
   else if(*p>='0'&&*p<='9')
   b++;
   else if(*p==' ')
   c++;
   else d++;
   p++;
   }
   printf("%d %d %d %d",a,b,c,d);

}

没有输出 哪里出错了

qiuyouzhi 发表于 2020-3-9 15:33:04

fgets不是从文件里获取一行字符串吗。。。

墨羽岚 发表于 2020-3-9 15:35:24

本帖最后由 墨羽岚 于 2020-3-9 15:39 编辑

代码错误太多了。。。{:10_247:}
首先abcd都没有赋初值,怎么输出;
然后判断是否是字母那里第一个a应当改为A

jackz007 发表于 2020-3-9 15:50:20

本帖最后由 jackz007 于 2020-3-9 15:51 编辑

#include <stdio.h>
#include <stdlib.h>
int main()
{
       char * p                                                                                              ;
       int a , b , c , d , i                                                                                 ;

       if((p = (char *) malloc(256))) {
               p = gets(p)                                                                                 ;
               for(a = 0 , b = 0 , c = 0 , d = 0 , i = 0 ; * (p + i) ; i ++) {
                     if((*(p + i) >= 'A' && *(p + i) <= 'Z') || (*(p + i) >= 'a' && *(p + i) <= 'z')) a ++ ;
                     else if(*(p + i) >= '0' && *(p + i) <= '9') b ++                                    ;
                     else if(*(p + i) == ' ') c ++                                                         ;
                     else d ++                                                                           ;
               }
               printf("%d %d %d %d" , a , b , c , d)                                                         ;
               free(p)                                                                                       ;
       } else {
               fprintf(stderr , "Error : malloc()\n")                                                      ;
       }
}
       不可以用 scanf() ,空格字符 ' ' 是 scanf() 默认的多个输入项之间的分隔符,因此,用 scanf() 无法跨过空格符获取完整的字符串输入。

chxchxkkk 发表于 2020-3-9 15:51:58

首先 指针*p是个野指针,不能这样使用的。
页: [1]
查看完整版本: 字符串的输入问题