Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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
我无法用C语言编程解决这个问题_C - Fatal编程技术网

我无法用C语言编程解决这个问题

我无法用C语言编程解决这个问题,c,C,该程序应该删除除字母以外的所有内容,并创建一个新字符串,该字符串将只包含大写字母 然而,它并没有打印结果 代码如下: #include <stdio.h> #include <stdlib.h> #include <string.h> char *remove_up(char input[]) { char *new_str = (char *) malloc(strlen(input) + 1); int i=0; int j=0;

该程序应该删除除字母以外的所有内容,并创建一个新字符串,该字符串将只包含大写字母

然而,它并没有打印结果

代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *remove_up(char input[])
{
    char *new_str = (char *) malloc(strlen(input) + 1);
    int i=0;
    int j=0;
    while (i < strlen(input))
    {
        if (((input[i]) >= 65 && (input[i]<=90)) || ((input[i]>=97) && (input[i]<=122)))
        {
            new_str[j]= toupper(input[i]);
            i++;
            j++;
        }
        else i++;
    }
    return new_str;
}

int main()
{
    char str_1[100];
    char str_2[100];
    printf("Enter first word: ");
    fgets(str_1, sizeof(str_1), stdin);
    printf("Enter second word: ");
    fgets(str_2, sizeof(str_2), stdin);


    char *up_str_1 =(char *) malloc(strlen(str_1) + 1);
    char *up_str_2 =(char *) malloc(strlen(str_2) + 1);

    up_str_1= remove_up(str_1);
    up_str_2= remove_up(str_2);
    printf("%s", up_str_1);
    printf("\n");
    printf("%s", up_str_2);
    return 0;
}
#包括
#包括
#包括
char*删除_up(char输入[])
{
char*new_str=(char*)malloc(strlen(输入)+1);
int i=0;
int j=0;
而(i如果((输入[i])>=65&&(输入[i]=97)&&(输入[i]请仔细检查您对parenths的使用情况-您有更多需要的内容。在该if语句中您还缺少了一个']'。

有一些问题,但由于这是标记作业,我将指出它们,但不会给您答案

首先,这不符合你的想法:

int i, j = 0;
j将被初始化,但我可能不会从0开始。您还需要将i初始化为0


接下来是一个输入错误-您在
处错过了一个结束
]
(输入[i更改
int i,j=0;
int i=0,j=0;
。您的
i
被初始化为大于
strlen的垃圾值(输入)
,因此在执行
循环时从未进入

它不会打印结果,因为您没有使用任何打印语句来显示要删除的调用返回的内容

要了解remove_up函数中发生了什么,您需要了解以下内容:

此代码:

if (((input[i]) >= 65 && (input[i]<=90)) || ((input[i]>=97) && (input[i<=122)))

if((输入[i])>=65&&(输入[i]=97)&&(输入[I您的代码似乎在定义
main
的过程中被截断了……您的程序出现了一些问题,但您似乎没有将全部内容放在此处。抱歉,我现在已发布了全部内容。除了返回0;和括号外,没有丢失任何内容。但请告诉我您的错误它。您没有打印任何内容。在比较
char
s(65、90等)时,不要使用ASCII值,与实际
char
s(
'A'
'Z'
等)进行比较你在
main
中的
malloc
也是毫无意义的,只会造成内存泄漏,因为在初始化到
malloc
的结果之后,指针就被重新分配了。你的代码也不会编译,所以这是它不会打印任何东西的一个原因…它是C,所以他不能使用cout。然而,他显然是我给了它一个.cpp扩展名,因为他在内联而不是在main()的开头声明up_str_1和up_str_2.对不起,我理解并修正了其他几点,但我不理解你的最后一点point@A_1_615如果你初始化<代码> i <代码> 0,修复语法错误,让你的编译器让你在范围的中间声明“代码> UpStruth1 /Cudio> 2代码/>代码,你还需要<代码> <代码> <代码> ToupPu/COD>。king now?如果我复制粘贴您的最新代码并添加,它似乎对我有效。很抱歉,当我复制并粘贴到此处时,这是一个错误…我在IDE中编译时正确输入了所有括号。感谢您的帮助…我已经解决了:)…我是否应该关闭此帖子。。。??