更改字符串中的字母

时间:2013-06-01 09:29:44

标签: c

if (part == TRUE) {
    char finalstring;
    finalstring = *change(strfromfile);
    printf("\n%s", finalstring);
}
return 0;

}

char
*change(char *str) {
    int i, len;
    len = strlen(str);
    for (i=0; i < len; i++){
        if (str[i] == "\n") {
              str[i] = " ";
        } 
    }
return str;
}

所以我试图通过删除换行符(\ n)并将其更改为更改字符串 空格(“”)。 我收到了很多警告(指针和整数之间的比较,与字符串文字结果的比较),并且更改函数没有正确返回字符串。我刚拿回一个空格和一个引号。

5 个答案:

答案 0 :(得分:3)

代码中的一些陈述很麻烦,会给你警告

char
*change(char *str) {
    int i, len;
    len = strlen(str);
    for (i=0; i < len; i++){
        if (str[i] == "\n") {   //this is troublesome
              ****str[i] = " "; //this is troublesome****
        } 
    }
return str;
}

添加 str[i] = ' '而不是str [i] =“”;

您正在尝试比较字符串文字和字符 - 这是不可接受的

char
    *change(char *str) {
        int i, len;
        len = strlen(str);
        for (i=0; i < len; i++){
            if (str[i] == '\n') {
                  str[i] = ' '; 
            } 
        }
    return str;
    }

此处不需要*change(strfromfile)。  此外,您似乎忘了申报char *finalstring,但您宣布了 char finalstring并指定一个不可接受的指针。

if (part == TRUE) {
    char finalstring;  //this is troublesome
    finalstring = *change(strfromfile);   //this is trouble some
    printf("\n%s", finalstring);
}
return 0;

}

change to 


 if (part == TRUE) {
    char *finalstring;
    finalstring = change(strfromfile);  
    printf("\n%s", finalstring);
}
return 0;
}

我希望这就够了。从下一次尝试发布整个可编译代码而不是片段。简短自包含代码示例(SSCCE)。

答案 1 :(得分:1)

此:

finalstring = *change(strfromfile);  /*getting error here*/

没有意义。 change()返回一个字符串(char*),你只是在这里捕获它的第一个字符。然后你将它打印为带有printf()的字符串(%s),如果你打开了编译器的警告,你就不会期望正常运行,因为它是未定义的行为。打开编译器的警告(例如gcc -Wall -Wextra -Werror),并考虑使用finalstring进行的操作。

答案 2 :(得分:1)

只需将“”改为''。

if (str[i] == '\n') {
          str[i] = ' ';

答案 3 :(得分:0)

您正在将char *从函数返回到char finalstring。函数调用* change(str)应该只是函数(str);

char *finalstring=change(strfromfile);

确保strfromfile字符串以“\ 0”NULL 字符终止,如果不是strlen()并且打印“%s”也可能是个问题。

答案 4 :(得分:0)

您应该在

之后的字符串中更改字符
if(str[i] == '\n')
{
   str[i] = ' ';
}