如何解决从 C 中的 void 函数返回一个值
我有一些代码块指定从主程序获取一个数字并将其转换为 char *
当我想在主程序中而不是在函数中打印它时,问题就开始了。
这是我目前尝试过的:
#include <stdio.h>
void help(int number,char* result);
int main()
{
char arr[100] = "";
int number;
printf("enter number: ");
scanf_s("%d",&number);
help(number,&arr);
printf("number is %d and string is %s\n",number,&arr);
return 0;
}
void help(int number,char* result)
{
*result = number;
}
结果结果:
数字是 15,字符串是
我尝试了许多不同的方法和变化,但仍然没有运气。建议?
解决方法
arr
已经指向数组第一个元素的地址,所以你应该去掉它前面的 & 符号。
在您的函数中,您实际上是将 number
分配给数组的第一个字符。这与写 arr[0] = number;
相同。例如,如果 number
的值为 65,您的代码将打印一个大写的 A,因为它是 ASCII 表中的相应字符。
您想要做的是将数字写入字符串。您可以使用 sprintf
中的函数 <stdio.h>
来实现:
void help(int number,char *result) {
sprintf(result,"%d",number);
}
第一个参数是您“打印”到的字符串,第二个参数指定您实际写入的内容,语法是普通 printf
的语法。
将帮助功能更改为:
*result = number;
-> sprintf(result,number);
赋值“*result = number;”将字符数组 (arr[0]) 中的第一个字符设置为 number 中存在的值,数组 [0] 可以容纳的最大值为 256 (-128to128)。 “*结果=数字;”这不会将数字转换为字符数组或字符串。
创建字符数组或字符串 snprintf 很有用。
int a = 12;
char arr[128] = {0};
snprintf(arr,128,a);
printf("%s \n",arr);
可以修改函数以包含此内容。
void help(int number,char* result,int result_size)
{
snprintf(result,result_size,number);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。