gpt4 book ai didi

c - 尝试创建一个简单的 "Debugger"(一个简单的 C 程序)

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:29 24 4
gpt4 key购买 nike

我试图创建一个简单的 C 程序,当大括号“不平衡”时通知用户。然而,结果往往是不正确的。例如,输入 {{}},提示错误语句而不是“未检测到错误”。任何帮助将不胜感激:)

注意:我是初学者! :)

#include <stdio.h>

main()
{
char filter[100]; // "Filtered" array (contains braces)
char s[100];

int i; // Increment variables
int j;
int z;
int l;
int c;

int linecount = 0;
int pair = 0; // Brace pair {}
int k = 0;
int y = 1;


while (y == 1)
{

linecount++;

for (i = 0; i < 99 && (c=getchar()) != '\n' && c != EOF; i++)
s[i] = c; // Initializing array with a line

if (c == EOF)
break;


for (j = 1; j <= i; j++)
{
if (s[j] == '{'|| s[j] == '}') // Filter extraneous characters
s[j] = filter[k++];
}

if (filter[0] == '{') // Determines if filtered array starts with {
{

for (z = 0, l = (k-1); z < k && l >= 0; z++, l--) //Determine pairs
{
if (filter[z] == '{' && filter[l] == '}')
pair++;
}

if (pair > 0)
printf("No errors detected.\n");
}

else
printf("Line %d: syntactic error.\n", linecount);
}
}
~

最佳答案

实现“不平衡”检查的更好更简洁的方法是使用堆栈。整体算法可以简化为。

  1. 如果遇到 { 将其压入堆栈。
  2. 如果遇到 '}' 检查堆栈是否为空, 如果没有,从堆栈中弹出 },即对于每个 } 应该有一个 { 如果堆栈为空,则有一些不平衡的 }

关于c - 尝试创建一个简单的 "Debugger"(一个简单的 C 程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26008125/

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