prompt提示

用例生成

任务描述

作为一个高级c程序员,需要完成下列功能的gtest测试用例

功能描述

给定两个数字型字符串s1和s2,求和,返回值也是字符串

接口举例

调用strAdd("123", "132"),输出"255"

输出要求

  • 入参为空串、null、非正整数数字的用例抛非法入参异常

  • 补充入参为0开头的数字字符串用例

  • 每个测试case一个测试函数

  • 每条用例都需要场景描述

代码生成

任务描述

作为一个高级c程序员,需要完成下列功能的代码实现

功能说明

给定两个数字字符串s1和s2,求和,返回值也是字符串。

接口举例

例如,输入strAdd("123","132"),输出"255"

输出要求

  • 使用单个字符转整形加法实现

  • 请去除输出结果开头的零

  • 请增加注释

  • 增加入参检查,null、空字符串入参、非正整数字符串入参抛出非法入参异常

  • 重申一下,需要使用c代码

代码修复

你是个资深c程序员,请帮忙修复被测代码

被测代码

```c

char* strAdd(char* s1, char* s2) {

if (s1 == NULL || s2 == NULL) {

printf("Invalid input: One or both of the strings are null.\n");

return NULL;

}

int i = 0, j = 0;

int len1 = strlen(s1), len2 = strlen(s2);

int len = len1 + len2;

char* result = (char*)malloc(len + 2); // Add extra space for carry and null terminator

int carry = 0;

while (i < len1 || j < len2) {

int x = i < len1 ? (isdigit(s1[i]) ? (s1[i] - '0') : 0) : 0;

int y = j < len2 ? (isdigit(s2[j]) ? (s2[j] - '0') : 0) : 0;

int sum = x + y + carry;

result[len - 1 - i - j] = sum % 10 + '0';

carry = sum / 10;

i++;

j++;

}

if (carry > 0) {

result[len - i - j - 1] = carry + '0';

result[len - i - j] = '\0';

}

else {

result[len - i - j - 1] = '\0';

}

return result;

}

```

不通过测试用例

```gtest

TEST(StrAddTest, NormalInput) {

EXPECT_EQ("1245", strAdd("1234", "12"));

EXPECT_EQ("9999", strAdd("1234", "8765"));

}

```

相关推荐
AI逐月5 分钟前
tmux 常用命令总结:从入门到稳定使用的一篇实战博客
linux·服务器·ssh·php
想逃离铁厂的老铁7 分钟前
Day55 >> 并查集理论基础 + 107、寻找存在的路线
java·服务器
小白跃升坊33 分钟前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
杨江1 小时前
seafile docker安装说明
运维
舰长1151 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
好好沉淀1 小时前
Docker开发笔记(详解)
运维·docker·容器
zmjjdank1ng1 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.1 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
树℡独1 小时前
ns-3仿真之应用层(三)
运维·服务器·ns3
VekiSon1 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发