Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        6年前关闭。
                                                                                            
                
        
#include<stdio.h>
#include<string.h>
#include<conio.h>

char *alphabetic (const char *s)
{
    char *a=(void *)0;
    int len,i=0,j=0;
    len=strlen(s);
    for(i=0;i<len;i++)
    {
        if((s[i]>=65))
        {
            if(s[i]<=90)
                {
                    a[j]=s[i];
                    j++;
                }
        }
        else if((s[i]>=97))
        {
            if((s[i]<=122))
            {
                a[j]=s[i];
                j++;
            }
        }
    }
    return (char *)a;
}

int main (void)
{
  char *a, *b, *c;
  a = alphabetic ("Ready... aim... fire!");
  printf ("%s\n", a);


  free(a);
  getch();
  return 0;
}


输出为:

Readyaimfire


我不知道怎么了

当我尝试运行它时

它根本不响应。

最佳答案

您正在访问NULL指针。您用0 in初始化a

char *a=(void *)0;


使用malloc分配内存

char *a = (char *)malloc(number_of_chars+1); /*1 for NULL character.*/


或将字符串数组传递给函数

  char *alphabetic (const char *s, char *a)


并用作

char a[NUMBEROFCHARS];
alphabetic("Your string..", a);


或开发类似的就地算法

 int j = 0; /*Insertion position.*/

 for(i = 0; i<len; ++i)
 {
    if(isalpha(s[i])) {
         s[j] = s[i];
         ++j;
    }
 }


这将仅保留字母字符。

希望对您有帮助。

关于c - 我需要输入一个字符串,仅返回c中的字母,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19992956/

10-11 21:55
查看更多