如何解决-从'char *'赋值给'char'会使指针变成整数而不进行强制转换

我需要从用户输入中删除所有逗号。该代码正在运行,但发出警告“从'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;
zhanlongjie 回答:如何解决-从'char *'赋值给'char'会使指针变成整数而不进行强制转换

        *(num + i) = "";                                               

我不确定您要在此处分配什么,但是双引号("")表示char *

如果要从字符串中删除,(ASCII 44),则不是这样做的方法。您需要将,之后的所有字符移至\0并正确终止字符串。

,

请注意(如果要删除字符串中的所有逗号),则生成的字符串可能比源字符串短。而且C中没有真正的“字符串”类型-只是字符数组。

我认为,正确的方法是:

  1. 计数源字符串中的逗号数
  2. 计算结果字符串的长度并为其保留足够的内存
  3. 迭代源字符串的整个字符,如果它们不是逗号,则将其复制到结果字符串中
,

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

#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;
}
本文链接:https://www.f2er.com/3168449.html

大家都在问