如何将此代码放在main函数之外?

时间:2018-05-26 09:22:58

标签: c

这目前工作正常,但在我的主要功能

while((strcmp(user_day, "Australia")) && (strcmp(user_day, "Japan")))
    {
        printf("Please select only Australia or Japan");
        scanf("%s", &country);
        case_change(country); // function to lowercase any uppercaseletter //
    }

如何将其置于单独的功能中。 (基本上是另一个.c文件)? 我尝试过做这样的事情,但它不断给出分段错误。

int main()
{
scanf("%s", &country);
testing_function(country);
}

int testing_function(char * country) 
{
    while((strcmp(user_day, "Australia")) && (strcmp(user_day, "Japan")))
    {
        printf("Please select only Australia or Japan");
        scanf("%s", &country);
        case_change(country); 
    }
return(country);
}

PS:我还没有完成" country"所发生的事情。所以我想把它作为一个字符串,如果这是有意义的。

2 个答案:

答案 0 :(得分:2)

无论country是数组还是指针,执行

scanf("%s", &country);

错了。

如果country是一个数组,那么它将为您提供指向数组的指针,它将是char (*)[SOME_SIZE]类型。如果country是一个指针(它在你的函数中),那么&country是一个指针到指针,它将具有类型char **。两者都不是正确的类型,因为"%s"格式需要指向char的{​​{1}}类型的指针。

简单的解决方案,也许是解决崩溃的方法,就是不使用address-of运算符。只需做

char *

虽然有一些其他可能的原因导致崩溃,但由于您没有向我们展示Minimal, Complete, and Verifiable Example,因此很难说出更具体的内容。

答案 1 :(得分:1)

问题是while循环,因为它是无限循环

使用sed 's/\S*\s*//' infile 代替

if

在functino&中使用相同的变量main将使用相同的地址

P.S如果你想使用变量的指针传递地址,那么在函数

中使用指针