【问题标题】:how to add null characters to strings?如何将空字符添加到字符串?
【发布时间】:2017-03-09 13:53:37
【问题描述】:

所以我试图在没有 strtok 的情况下标记一个字符串来完成家庭作业。教授建议我们在有空格的地方添加 '\0' 以将字符串分成类似 strtok 的部分。我的问题是,一旦我找到第一个空格,我可以在其中添加一个 '\0' 字符,但是它会停在那里,之后我无法将 '\0' 添加到其他空格字符。

     int tokenize(char *line, int len){
        int i;
        char *ptr = line;
        for(i=0; i<len; i++){

           if(isspace(ptr[i]){
              ptr[i]='\0'; 

           }
        }

       return 1;
      }

     int main(){

       char *line= "wo rd ";

       int len = strlen(line);
       tokenize(line, len);

       return 1;
     }

【问题讨论】:

  • 您的代码尝试修改字符串文字,这是未定义的行为
  • char *line= "wo rd "; --> char line[] = "wo rd "; ,因为不允许更改字符串字面量。
  • 指针不是数组。正如其他人已经指出的那样,使用数组并使用字符串文字初始化它,而不是指向字符串文字的指针。

标签: c pointers null


【解决方案1】:

Isspace 函数只会搜索字符串,直到遇到 NULL(\0) 字符。因此将字符串元素与空格(或 ASCII 值)进行比较以识别空格并将其替换为 '\0' 字符。

 int tokenize(char *line, int len){
        int i;
        char *ptr = line;
        for(i=0; i<len; i++){

           if(ptr[i] == ' '){
              ptr[i]='\0'; 

           }
        }

       return 1;
      }

     int main(){

       char *line= "wo rd ";

       int len = strlen(line);
       tokenize(line, len);

       return 1;
     }

【讨论】:

    猜你喜欢
    • 2015-10-21
    • 1970-01-01
    • 2010-11-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    相关资源
    最近更新 更多