【发布时间】:2014-05-07 20:45:10
【问题描述】:
我正在尝试模拟通过引用传递,但显然我做错了什么:
long int toNumber(char * input) {
char* pointer;
long int number;
number = strtol(input, &pointer, 10);
if (number == 0L) {
return -1337;
} else {
input = pointer;
return number;
}
}
我希望这个函数返回输入的值并修剪转换后的开头,但是当我尝试调用它时,即使整数转换完美无缺,字符串仍然保持不变。感谢您的任何帮助。
编辑:
char* input = "123 456";
long int number = toNumber(input);
编辑 2:改回来了,抱歉。 我想让它像这样工作: 输入 = 123 456 -> 数字 = 123,输入 = 456 -> 数字 = 456,输入 = NULL
【问题讨论】:
-
通过更改问题中的代码,您已更改问题并使任何现有答案无效。您修改后的代码,当我在我的系统上运行它时,会因分段错误而死,因为它试图修改字符串文字。
-
发布示例时,有助于说明预期结果。所以你希望函数返回 123456... 并且字符串会以某种方式改变?
-
我希望它返回 123 并将输入更改为“456”。
标签: c string function parameter-passing