我需要将12小时的时间转换为24小时的格式。
我现在已经把12小时的时间硬编码了,以使事情更简单。
我的逻辑:输入sting 07:05:45PM提取最后2个字符。如果AM check为前两个字符,则为12。。如果是,则将其设置为00,否则按原样输出,如果PM检查前两位数字是否为12。。如果是,请保持原样,如果不是,则在前2位加上12
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char* timeConversion(char* s1)
{
// input sting 07:05:45PM
// extract last 2 chars.
// if AM
// check is first 2 chars are 12.. if yes chance them to 00
// else output as it is
// if PM
// check if first 2 digits are 12 ..if yes leave as it is
// if not then add 12 to first 2 digits
char s[strlen(s1) + 1];
strcpy(s, s1);
char suffix[3]; // pm am
suffix[0] = s[strlen(s) - 2];
suffix[1] = s[strlen(s) - 1];
suffix[2] = '\0';
char xx[3]; // first 2 nos
xx[0] = s[0];
xx[1] = s[1];
xx[2] = '\0';
s[strlen(s1) - 1] = '\0';
s[strlen(s1) - 2] = '\0';
if(strcmp(suffix, "AM") == 0)
{
if(strcmp(xx, "12") == 0)
{
s[0] = '0';
s[1] = '0';
strcpy(s1, s);
}
else
{
return s1;
}
}
else
{
if(strcmp(xx, "12") == 0)
{
strcpy(s, s1);
return s1;
}
else
{
int n;
// 01 - 09
if(xx[0] == '0')
{
char x = xx[1];
n = x - '0';
// xx = itoa(n);
}
else
{
// 10, 11
n = atoi(xx);
}
n = n + 12;
// itoa(n, xx, 10);
sprintf(xx, "%d", n);
s[0] = xx[0];
s[1] = xx[1];
}
}
strcpy(s1, s);
return s1;
}
int main()
{
char *str = "07:05:45PM";
char *str1 = timeConversion(str);
printf("%s\n", str1);
return 0;
}
总线错误:10是我运行代码得到的
问题在于
strcpy(s1, s);
实际上,您是在试图写入指向字符串文本的第一个元素的指针。它调用未定义的行为。
检查函数调用
timeConversion(str);
其中,str
指向字符串文本,任何修改字符串文本内容的尝试都是无效的。
在timeConversion()
函数中需要做的是:
我们有以下依赖关系: 我们使用代码生成器从AVRO模式文件生成Scala case类。一个这样生成的case类的字段之一是一个任一值。在AVRO模式中,这是用type=[t1,t2]表示的,因此生成似乎是体面的,即是一个和类型:可以是t1类型或t2类型。
{“error”:“invalid_scope”,“error_description”:“AADSTS70011:为输入参数”scope“提供的值无效。作用域 https://graph.microsoft.com/User.Read https://graph.microsoft.com/User.ReadWrite https://graph.microsoft.com/User.ReadB
错误(25,1):PLS-00103:遇到符号“EXEC” 放下桌上的学生;提交;
很抱歉,我对Java知之甚少。我得到了这个代码来接管。基本上,我在 当我运行代码时。 下面是解析XML的块 这是Improts,不确定是否需要这样做 这是XML文件