Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
如何修复从“char*”到“char”的赋值从指针生成整数而无需强制转换_C - Fatal编程技术网

如何修复从“char*”到“char”的赋值从指针生成整数而无需强制转换

如何修复从“char*”到“char”的赋值从指针生成整数而无需强制转换,c,C,我需要从用户输入中删除所有逗号。该代码正在工作,但它给“char*”中的“char”赋值时发出警告,使指针中的整数不带强制转换。我需要摆脱这个警告 removeCommas(argv[1]); printf("%s", argv[1]); return 0; for(i=0; i<strlen(num); i++) { c = *(num + i); if(c == 44) {

我需要从用户输入中删除所有逗号。该代码正在工作,但它给“char*”中的“char”赋值时发出警告,使指针中的整数不带强制转换。我需要摆脱这个警告

removeCommas(argv[1]);

printf("%s", argv[1]);

return 0;



    for(i=0; i<strlen(num); i++)
    {   
        c = *(num + i);
        if(c == 44)    
        {   
            *(num + i) = "";                                               
        }                        
    }       

return 0;
我不确定您在这里试图分配什么,但双引号表示char*


如果您想从字符串中删除ASCII 44,那么这不是一种方法。您需要在\0之后、直到\0之前移动所有字符,并正确终止字符串。

您应该逐个字符地工作。在输入字符串上循环,搜索逗号,然后用字符串的剩余部分覆盖它:

#include "string.h"
#include "stdio.h"



int main()

{
    char num[100];
    strcpy(num, "abc,def,,a,");

    unsigned int i;
    char c;

    for (i = 0; i < strlen(num); i++)
    {
        c = num[i];
        if (c == ',')
        {
            if (num[i + 1] == '\0')
                num[i] = '\0';
            else
            {               
                size_t s = strlen(num + i + 1);
                memmove(num + i, num + i + 1, s+1);

                --i;
            }
        }
    }

    printf("%s", num);

    return 0;
}

请注意,如果要从字符串中删除所有COMA,则生成的字符串可能比源字符串短。C语言中没有真正的字符串类型——它只是字符数组

我认为,正确的方法是:

计算源字符串中的逗号数 计算结果字符串的长度并为其保留足够的内存 迭代源字符串的字符,如果它们不是逗号,则将它们复制到结果字符串
您可以共享完整的源代码吗?或者?从“char*”到“char”的警告赋值使指针中的整数不带强制转换,几乎应该始终视为错误。您可能需要查看该函数。不存在“无”这样的情况,实际上您希望从字符串中删除所有逗号。顺便说一句,不要写44,写','Google从字符串c中删除字符。因为你没有发布变量声明,所以这个问题无法回答。我只是想用空来替换逗号。@Muttaki c中没有这样的东西。我的意思是,你需要确定要被替换的字符,添加一个“j”变量,它只在不逗号时增加,并将写的内容从*num +j= *num + iNoT改为一个拷贝,在字符串的中间用“\\ 0”结尾。这将导致内存泄漏。@JakubSzułakiewicz字符串中的\0与内存泄漏有什么关系?你的意思是这个0之后的内存将不被使用吗?@ HyyBiLeCAT如何正确地为字符串保留空闲内存,如果你不知道它是真的长度,而终止字符是在它中间的?@ JabusSuu[AkeWiCz完全一样,如果你没有0,它会释放它。@ NavelPeling这个代码不能处理连续逗号。
#include "string.h"
#include "stdio.h"



int main()

{
    char num[100];
    strcpy(num, "abc,def,,a,");

    unsigned int i;
    char c;

    for (i = 0; i < strlen(num); i++)
    {
        c = num[i];
        if (c == ',')
        {
            if (num[i + 1] == '\0')
                num[i] = '\0';
            else
            {               
                size_t s = strlen(num + i + 1);
                memmove(num + i, num + i + 1, s+1);

                --i;
            }
        }
    }

    printf("%s", num);

    return 0;
}