gpt4 book ai didi

c - 具有 2 个 if 的代码不断给出第一个 if 的结果

转载 作者:行者123 更新时间:2023-11-30 19:17:34 25 4
gpt4 key购买 nike

我对 C 有点陌生,我的任务是编写一个程序来计算 ';' 的次数。已在用户选择的文件中使用。所以我决定用一堆 if 来实现它,当我放下第一个 if 时(只有一个 if),它就起作用了,但是当我添加 else if 段时,它只是吐出第一个 if 的结果(eof 的数字),我没有线索说明为什么会发生这种情况。代码如下:

#include<stdio.h>
#include<stdlib.h>

int main()
{
FILE *fp;
int s = 0;
int ch;
char in;
printf("Choose which file to be opened: inpt , eof or cntr\n");
scanf("%c", &in);

if (in = 'eof')
{
fp = fopen("D:\\programming\\C projects\\kursova PIK 1\\kursova 1\\New folder\\eof.c", "r");
if (fp == NULL)
{
printf("Error opening file");
}
else
{
while (!feof(fp))
{
ch = fgetc(fp);
if (ch == ';')
{
++s;
}
else if (ch == EOF)
break;
}
fclose(fp);
printf("The number of times ';' was used is: %d", s);
}
}
else if (in = 'inpt')
{
fp = fopen("D:\\programming\\C projects\\kursova PIK 1\\kursova 1\\New folder\\inpt.c", "r");
if (fp == NULL)
{
printf("Error opening file");
}
else
{
while (!feof(fp))
{
ch = fgetc(fp);
if (ch == ';')
{
++s;
}
else if (ch == EOF)
break;
}
fclose(fp);
printf("The number of times ';' was used is: %d", s);
}
}
system("pause");

return 0;
}

最佳答案

您无法将 3 个字母的字符串输入到单字符变量中。如果您计划用户输入eof或类似的内容,您需要声明一个字符数组,例如

char userinput[ 30];

然后输入用户选择

scanf( "%s", userinput);

并将其与字符串进行比较,而不是多字 rune 字:

if( strcmp( userinput, "eof") == 0)
process a file

而不是

if(in == 'eof)

最后,请注意您使用双等号 == 来比较值。单个 = 是赋值,而不是 C 中的比较。

关于c - 具有 2 个 if 的代码不断给出第一个 if 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28002430/

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