gpt4 book ai didi

c - 用于测试程序的 Bash 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:18 25 4
gpt4 key购买 nike

这是一个反转字符串的简单程序。

void str_reverse(const char*, size_t, char*, size_t);

int main(){

char str[256];

while(fgets(str, 256, stdin)){
if(strncasecmp(str, "quit", 4) == 0) break;

size_t size_reversed = strlen(str) * sizeof(char);
char* reversed = malloc(size_reversed);
str_reverse(str, sizeof(str), reversed, size_reversed);
printf("Orginal String : %s\n", str);
printf("Reversed String : %s\n", reversed);
printf("__________________________________\n");
free(reversed);
}
return 0;
}

void str_reverse(const char* str1, size_t size1, char* str2, size_t size2){

memcpy(str2, str1, size1);

char temp;
size_t len = strlen(str2) - 1;
size_t stop = len/2;
size_t i,k;

for(i = 0, k = len; i < stop; i++, k--)
{
temp = str2[k];
str2[k] = str2[i];
str2[i] = temp;
}
//return str;
}

我正在尝试编写一个 bash 脚本来自动编译和测试该程序。我有以下测试用例:

  • 普通字符串,
  • 空字符串,
  • 数字,
  • 混合案例

谁能帮我开始做这件事。谢谢。

最佳答案

我会更改程序以接受要反转的字符串作为命令行参数,然后打印反转后的字符串作为输出。然后,使用 bash 脚本将程序的输出与预期输出进行比较。

int main(int argc, char* argv[]){

if ( argc != 2 )
{
fprintf(stderr, "Expect to see one argument.\n");
return EXIT_FAILURE;
}

char* str = argv[1];

size_t size_reversed = strlen(str) * sizeof(char);
char* reversed = malloc(size_reversed+1);
str_reverse(str, strlen(str), reversed, size_reversed);
printf("%s\n", reversed);
free(reversed);

return EXIT_SUCCESS;
}

和 bash 脚本:

#!/bin/bash

function test_program()
{
in="$1"
expected_out="$2"
out=$(./program "$in")

if [ "$out" != "$expected_out" ]
then
echo "output: $out"
echo "expected output: $expected_out"
echo "Test failed."
else
echo "Test passed"
fi
}

test_program "automate the compilation" "noitalipmoc eht etamotua"
test_program "compilation" "noitalipmoc"
test_program "abcd" "dcba"

关于c - 用于测试程序的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30381881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com