这是我的函数代码:
char * increment_b_string(char * b_string)
{
char * ret_string = (char *) malloc(7);
ret_string = "001aaa";
if (*(b_string + 2) == '9')
{
*(ret_string +2) == '0';
if (*(b_string + 1) == '9')
{
*(ret_string +1) = '0';
*(ret_string) = *(b_string) + 1;
} else {
*(ret_string + 1) = *(b_string + 1) + 1;
}
} else {
*(ret_string + 2) = *(b_string + 2) + 1;
}
return ret_string;
}
Run Code Online (Sandbox Code Playgroud)
有关它为什么会失败的任何想法?
一般的想法是b_string将包含类似"123aaa"的值."aaa"部分并不重要,永远不会改变.只有前3个数字会.它们需要增加,就好像它们是整数一样.需要在开始时保留前导零.因此,如果输入为"004aaa",则输出应为"005aaa".这只需要达到"300aaa",因此我不会考虑更多的东西.这是一个学校的编程任务,因此问题非常人为.
谢谢.
编辑:我改变了我的功能.这就是现在的情况.
void increment_b_string(char * b_string)
{
if (b_string[2] == '9')
{
b_string[2] == '0';
if (b_string[1] == '9')
{
b_string[1] = '0';
b_string[0] += 1;
} else {
b_string[1] += 1;
}
} else {
b_string[2] += 1;
}
}
Run Code Online (Sandbox Code Playgroud)
假设b_string最初填充了...
strcpy(b_string,"001aaa");
这会是正确的吗?我的程序仍然表现出相同的行为,但这可能是代码中其他地方的错误.
nos*_*nos 14
您不能增加或更改字符串文字 - 它们只能在C中读取,这就是您正在做的事情.
char * ret_string = (char *) malloc(7);
ret_string = "001aaa";
Run Code Online (Sandbox Code Playgroud)
不执行您认为它做的事情,它不会将字符串复制到malloced空间ret_string中,它将ret_string设置为指向字符串文字"001aaa".请改用:
char * ret_string = (char *) malloc(7);
strcpy(ret_string,"001aaa");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2561 次 |
| 最近记录: |