Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在c语言中,是否可以在另一个字符串函数中使用一个字符串函数_Arrays_C_String_Function - Fatal编程技术网

Arrays 在c语言中,是否可以在另一个字符串函数中使用一个字符串函数

Arrays 在c语言中,是否可以在另一个字符串函数中使用一个字符串函数,arrays,c,string,function,Arrays,C,String,Function,是否可以在另一个字符串函数中使用一个字符串函数。见下文。。。。 strcmp(string1,strupr(string2)) 在这里,我使用strupr()函数将string2的所有字符都大写,然后通过strcmp()函数将其与string1进行比较。 下面是我的程序 #include <stdio.h> #include <string.h> int main() { char str[41], name[43]; gets(str); get

是否可以在另一个字符串函数中使用一个字符串函数。见下文。。。。
strcmp(string1,strupr(string2))
在这里,我使用strupr()函数将string2的所有字符都大写,然后通过strcmp()函数将其与string1进行比较。
下面是我的程序

#include <stdio.h>
#include <string.h>
int main()
{
    char str[41], name[43];
    gets(str);
    gets(name);
    if (strcmp(strupr(str), name) == 0)
        printf("\nwow it works.");
    return 0;
}


要将这些评论浓缩成一个答案:

只要内部函数的返回类型与外部函数的参数类型匹配(或兼容),这将起作用

一个简单的示例,它将打印数字
3

int add1(int a) {
    return a + 1;
}

int main(void) {
    printf("%d\n", add1(add1(add1(0))));
}
因此,只要您的
strupr
函数返回
char*
(或
const char*
等),它将作为is的函数原型工作:

要创建一个将整个字符串大写的基本函数,只需逐个字符循环字符串并对每个字符使用该函数。有几种方法可以实现这个循环

这里有一种方法:

char *upcase(char *s) {
    for (char *p = s; p && *p; p++)
        *p = toupper(*p);
    return s;
}

请注意,这是一个破坏性函数,它会更改传递给它的字符串的内容。它不适用于静态字符串(例如,
const char*foo=“abcdefg”
)。

要将注释浓缩为答案:

只要内部函数的返回类型与外部函数的参数类型匹配(或兼容),这将起作用

一个简单的示例,它将打印数字
3

int add1(int a) {
    return a + 1;
}

int main(void) {
    printf("%d\n", add1(add1(add1(0))));
}
因此,只要您的
strupr
函数返回
char*
(或
const char*
等),它将作为is的函数原型工作:

要创建一个将整个字符串大写的基本函数,只需逐个字符循环字符串并对每个字符使用该函数。有几种方法可以实现这个循环

这里有一种方法:

char *upcase(char *s) {
    for (char *p = s; p && *p; p++)
        *p = toupper(*p);
    return s;
}

请注意,这是一个破坏性函数,它会更改传递给它的字符串的内容。它不适用于静态字符串(例如,
const char*foo=“abcdefg”
)。

由于您的目的似乎是以不区分大小写的方式比较这两个字符串,您应该使用
stricmp

if (stricmp(str, name) == 0)
        printf("\nwow it works.");

它还有另外一个好处,即既不更改原始字符串,也不分配新字符串。由于您的目标似乎是以不区分大小写的方式比较两个字符串,因此您应该使用
stricmp

if (stricmp(str, name) == 0)
        printf("\nwow it works.");

它还有另外一个好处,即既不更改原始字符串,也不分配新字符串。您必须
free()

是否可以使用一个字符串函数。但是,不可能使用不存在的函数,例如
strupr
strupr
是您自己编写的吗?请出示。无论如何,这实际上与字符串函数本身无关。这只是基本的C。如果内部函数返回的值与外部函数所需的参数类型兼容,那么它就可以工作。即使是像这样的简单示例,也永远不要使用像
get
这样的函数。改用。@ShambhavGautam这是个糟糕的建议。如果
toupper
函数存在并与使用的编码一起工作,为什么不使用它呢?ASCII并不是唯一的编码方式。@Suraj阅读了最后的注释:这是一个非标准函数,仅适用于旧版本的Microsoft C。
是否可以使用一个字符串函数。但是,不可能使用不存在的函数,例如
strupr
strupr
是您自己编写的吗?请出示。无论如何,这实际上与字符串函数本身无关。这只是基本的C。如果内部函数返回的值与外部函数所需的参数类型兼容,那么它就可以工作。即使是像这样的简单示例,也永远不要使用像
get
这样的函数。改用。@ShambhavGautam这是个糟糕的建议。如果
toupper
函数存在并与使用的编码一起工作,为什么不使用它呢?ASCII并不是唯一的编码方式。@Suraj阅读了结尾的注释:这是一个非标准函数,仅适用于较旧版本的Microsoft C。该函数不处理OP的问题,但在这里我必须以大写形式生成字符串。该函数不处理OP的问题,但在这里我必须以大写形式生成字符串。