c语言sprintf函数问题 100
在codewars上面是通过了的,我把它复制到vc就出错了;还有这一行k+=sprintf(str+k,"%d",*text&31);是怎么执行的啊?...
在codewars上面是通过了的,我把它复制到vc就出错了;还有这一行 k += sprintf(str + k, "%d ", *text&31); 是怎么执行的啊?
展开
5个回答
展开全部
我觉得可能是因为编译器默认没有支持或者勾选C99吧。
C99支持变量在使用时声明,而非C99则要求变量定义必须放在函数开始处一起定义。
C99支持变量在使用时声明,而非C99则要求变量定义必须放在函数开始处一起定义。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2019-03-17
展开全部
你试试我给的测试代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *alphabet_position(char *text) {
char *str = malloc(strlen(text) * 3);
str[0] = 0;
int k = 0;
while (*text) {
if (*text > 64) {
k += sprintf(str + k, "%d ", *text&31);
text ++;
}
}
str[k - 1] = 0;
return str;
}
int main() {
char str[] = "abc";
char *test;
test = alphabet_position(str);
printf("%s===%s\n", str, test);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将k的定义提至str[0]=0;前
追问
能详细点吗?比如说*text=“abc”的时候,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
定义变量放在调用函数前试试 malloc放在下面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询