怎么了? C

时间:2018-04-23 16:31:00

标签: c while-loop strcmp

我想比较一个字符串的元素和一个字符,这有什么不对?我得到分段错误。

我想通过一个字符串,将字符串的一部分复制到一个字符串元素,当元素=",",但我犯了一些错误。

传递'strcmp'的参数1使得整数指针没有强制转换

     char palavra[1000],linha[1000];
     int i;

     while(fgets(linha, sizeof(linha), df)!=NULL){

                i=0;
                strcopy(palavra,"0");                    

                while(strcmp(&linha[i],",")!=0){

                    strcpy(&palavra[i],&linha[i]);
                    i++;                    

                }
      printf("%s,",palavra);
      }

3 个答案:

答案 0 :(得分:1)

您不应该使用strcmp来比较单个char,而是用于比较完整字符串。如果您只想比较各个元素,您只需直接比较它们: linha[i] == ','

同样适用于复制char。

答案 1 :(得分:1)

应该是

           while(linha[i] != ','){

                palavra[i] = linha[i];
                i++;                    

            }

虽然我对palavra[i]赋值有点怀疑,因为它会覆盖在循环之前完成的strcpy为0

答案 2 :(得分:-1)

  1. 您正在传递地址,而不是值&linha[i]
  2. 使用strcmp(),两个字符串都应该以null结尾(\ 0)
  3. 所以,请使用if as

    for( i=0; i < len; i++)          
        if(linha[i]!=',')