gpt4 book ai didi

c - 计算字符的c程序中的段错误

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

我是 C 的新手,正在尝试编写一个计算方括号、大括号、空格和换行的程序。编译器发出错误:打开文件时出错段错误(核心已转储)

#include <stdio.h>


int main(int argc, char *argv[])
{
FILE *fp;
char c;
int blank, tab, openbrace, closedbrace,openbracket,closedbracket, newline=0;


if ((fp = fopen("argv[0]", "r")) == NULL)
{
fprintf(stderr, "Error opening file");
}
while ((c=fgetc(fp)) != EOF)
{
switch(c)
{

case '{':
openbrace++;

case '}':
closedbrace++;

case '[':
openbracket++;

case ']':
closedbracket++;

case '\n':
newline++;


}
}
fclose(fp);
printf("\nThe number of { are %d", openbrace);
printf("\nThe number of } are %d", closedbrace);
printf("\nThe number of [ are %d", openbracket);
printf("\nThe number of ] are %d", closedbracket);
printf("\nThe number of new lines are %d", newline);
}

最佳答案

一些事情:

1) 出现错误后立即退出 - 不要继续。

2) 打开 argv 1 ,而不是“argv[0]”(argv[0] 包含 executable name ,并且您将其包含在字符串中)

fopen(argv[1], "r")

通过检查 argc 来确保 argv[1] 存在可能是个好主意。

关于c - 计算字符的c程序中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19393582/

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