我一直在做tinyfiledialogs代码项目,我已经设置好了环境,代码也编译好了。
//Number of beeps
void beeper(int num_beeps) {
char message[100];
sprintf(message, "Beeping %d times! \n Press OK to initiate.", num_beeps);
tinyfd_messageBox("Notification", message, "info", "OK", 1);
//beeps
for (int i = 0; i < num_beeps; i++) {
Beep(800, 300); // Frequency and duration of the beep sound
Sleep(300); // Pause between beeps (in milliseconds)
}
}
//Favorite color and store RGB values
void mood_ring(struct FavoriteColor* color) {
char const* options[8] = { "Red", "Orange", "Yellow", "Green", "Blue", "Purple", "Pink", "Cancel" };
int choice = tinyfd_openFileDialog("Pick your favorite color", "Choose a color:", 8, options, NULL, 1);
//User cancel
if (choice == -1 || choice == 7) {
tinyfd_messageBox("Error", "You cancelled the color selection.", "error", "OK", 1);
return;
}
//RGB values
switch (choice) {
case 0: // Red
color->red = 204;
color->green = 0;
color->blue = 0;
break;
case 1: // Orange
color->red = 255;
color->green = 153;
color->blue = 0;
break;
case 2: // Yellow
color->red = 255;
color->green = 255;
color->blue = 0;
break;
case 3: // Green
color->red = 0;
color->green = 128;
color->blue = 0;
break;
case 4: // Blue
color->red = 0;
color->green = 0;
color->blue = 204;
break;
case 5: // Purple
color->red = 102;
color->green = 0;
color->blue = 153;
break;
case 6: // Pink
color->red = 255;
color->green = 20;
color->blue = 147;
break;
}
}
int main(int argc, char* argv[]) {
if (argc < 3) {
return -1;
}
//Number of beeps
int num_beeps = atoi(argv[2]);
beeper(num_beeps);
//Favorite color
struct FavoriteColor person_color;
strncpy(person_color.name, argv[1], sizeof(person_color.name) - 1);
person_color.name[sizeof(person_color.name) - 1] = '\0';
mood_ring(&person_color);
char message[256];
printf(message, sizeof(message), "Name: %s\nRed: %d\nGreen: %d\nBlue: %d", person_color.name, person_color.red, person_color.green, person_color.blue);
tinyfd_messageBox("Favorite Color", message, "info", "OK", 1);
return 0;
}
编辑!我的参数数量是错误的,现在它打印我的名字,并打开一个弹出的哔哔声,并做哔哔声!但没有其他弹出。对于上下文应该有更多的弹出关于最喜欢的颜色,但这并没有发生。命令行打印这一点。
╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠MacKenna
型
我所期望的是类似于这样的输出:
Input: ./P_MiniProject3 John 5
(Output dialog box appears)
Notification: Beeping 5 times!
(Color selection dialog box appears)
User selects Green as their favorite color.
(Message box appears)
Favorite Color:
Name: John
Red: 0
Green: 255
Blue: 0
型
或者至少像这样的错误消息:
Input: ./P_MiniProject3 Bob
(Output dialog box appears)
Error: Incorrect number of arguments provided. Please provide a name and the number of beeps.
型
1条答案
按热度按时间t30tvxxf1#
在尝试对代码进行故障排除时,我不得不做出一些有根据的猜测,并进行一些代码替换,因为我没有使用“tinyfd”小部件集(对“GTK”更熟悉)。
以下是代码的重构版本,以便复制所需的功能,同时考虑了一些假设和有根据的猜测。
字符串
首先,我很抱歉包含了完整的代码,但是重构的各个部分在整个程序中都是分散的。
在查看了编辑过的代码和注解之后,我确实对“tinyfd_messageBox”函数的使用做了一些研究,并注意到这个函数返回一个字符数组(字符串)返回一个字符串值到一个整数变量很可能是您的争论点,因为您可能在此遇到了未定义的行为点
然后,下面是一个带有终端输出的样本运行(紫色是测试选择的颜色)。
型
这里需要注意的是,可能需要进一步研究“tinyfd”工具包的正确用法,沿着可能需要进一步使用一些“C”教程文献,因为它与变量定义和用法有关。
希望您能够分析此示例代码沿着解释某些替换原因的附加注解。