为什么函数调用未执行?

时间:2018-09-26 20:04:26

标签: c string function

#include<stdio.h>

void check_alphabets(char array_string[],int n){
    char alphabet_array[n];
    int i,j,val;

    int alphabet_array_counter=0;
    for(i=0;i<n;i++){
        val=array_string[i];
        if((val>=65 && val<=90) || (val>=97 && val<=122)){
            alphabet_array[alphabet_array_counter]=array_string[i];
            alphabet_array_counter++;
        }
    }
    for(j=0;j<n;j++){
        printf("%c",alphabet_array[j]);
    }
}

void check_number(char array_string[],int n){
    char number_array[n];
    int i,j,val;
    int number_array_counter=0;

    for(i=0;i<n;i++){
        val=array_string[i];
        if(val>=30 && val<=39){
            number_array[number_array_counter]=array_string[i];
            number_array_counter++;
        }
    }
       for(j=0;j<n;j++){
        printf("%c",number_array[j]);
    }
}

void check_character(char array_string[],int n){
    char character_array[n];
    int i,j,val;
    int character_array_counter=0;

    for(i=0;i<n;i++){
        val=array_string[i];
        if((val>=32 && val<=47) || (val>=58 && val<=64) || (val>=91 && val<=96) || (val>=123 && val<=127)){
            character_array[character_array_counter]=array_string[i];
           character_array_counter++;
        }
    }
    for(j=0;j<n;j++){
        printf("%c",character_array[j]);
    }

}

void main(){
    int size=100;
    char array_string[size];
    printf("Enter string? ");
    scanf("%s",array_string);

    int i=0,count=0;
    while(array_string[i]!='\0'){
        count++;
        i++;
    }
    printf("size is %d",count);

    void check_alphabets(array_string,count);
    void check_number(array_string,count);
    void check_character(array_string,count); 


}

我有上面的代码。我不知道这是怎么回事。无论我修改了什么,这些功能都没有执行。 我正在Ubuntu 18中使用gcc进行编译。 但是,每当我尝试编译时,它都会引发警告

  

在功能main
  警告:函数声明void check_alphabets(array_string,count)

中的参数名称(无类型)

此警告与main发出的所有呼叫一起显示。 我用谷歌搜索,但找不到任何解决方案。

3 个答案:

答案 0 :(得分:3)

这些不是函数调用:

range(..)

这些是声明。函数名称前面的返回类型告诉我们这是一个声明。调用函数时,无需说返回类型是什么:

void check_alphabets(array_string,count);
void check_number(array_string,count);
void check_character(array_string,count); 

答案 1 :(得分:1)

check_alphabets(array_string,count);
check_number(array_string,count);
check_character(array_string,count); 

这些行不是函数调用。你的意思

void check_alphabets(array_string,count);
void check_number(array_string,count);
void check_character(array_string,count); 

得到的警告是因为编译器认为您正在尝试声明一个函数,但是语法是无效的函数声明(无类型的参数名称)

答案 2 :(得分:0)

首先,您必须学习如何使用Markdown正确格式化代码。其次,您不是在main中调用函数,而只是在声明它们。

void check_alphabets(array_string,count);
void check_number(array_string,count);
void check_character(array_string,count);

必须成为

check_alphabets(array_string,count);
check_number(array_string,count);
check_character(array_string,count);