2 while在C中的函数中循环

2 while在C中的函数中循环,c,C,是否可以在同一函数中运行2个while循环? 只有一个while循环有效。如果我移除第一个,第二个会起作用,如果移除第二个,第一个会起作用 #include <stdio.h> #include <stdlib.h> #define FILE_NAME "results.txt" void analyseText(int character[], int i, FILE *fptr, int *sum, int a) { while ((i = fgetc(fp

是否可以在同一函数中运行2个while循环? 只有一个while循环有效。如果我移除第一个,第二个会起作用,如果移除第二个,第一个会起作用

#include <stdio.h>
#include <stdlib.h>
#define FILE_NAME "results.txt"

void analyseText(int character[], int i, FILE *fptr, int *sum, int a)
{
    while ((i = fgetc(fptr)) != EOF)
    {
        if (i >= 'a' && i <= 'z')
            character[(i - 'a')]++;
        if (i >= 'A' &&  i <= 'Z')
            character[(i - 'A')]++;

        for (int i = 0; i < 26; i++)
        {
            printf("%c: %d\n", i + 'a', character[i]);

        }
        while (1)
        {
            int result = fscanf(fptr, "%d", &a);
            if (result == EOF) {
                break;
            }
            else if (result == 1) {
                *sum += a;
            }
            else {

                fscanf(fptr, "%*c");
            }
        }
    }
}
#包括
#包括
#定义文件名“results.txt”
无效分析文本(整数字符[],整数i,文件*fptr,整数*sum,整数a)
{
而((i=fgetc(fptr))!=EOF)
{

如果(i>='a'&&i='a'&&i我已经运行了您的程序,第二个while循环似乎终止了函数。第二个while循环将读取文件中的字符,并一直读取到文件末尾,然后退出。两个while循环都执行,但第一个循环只执行一次,第二个循环执行到文件末尾e、 也许这是一个逻辑错误


另外,如果您试图读取第二个循环中的一些数字,则如果文件中只有字符,则结果将永远不会为pe 1。

我已经运行了您的程序,第二个while循环似乎终止了该函数。第二个while循环将读取文件中的字符,并一直读取到文件的结尾,然后将退出。这两个while循环都将执行循环执行,但第一个循环只执行一次,第二个循环执行到文件末尾。这可能是一个逻辑错误吗

另外,如果您试图读取第二个循环中的一些数字,则如果文件中只有字符,则结果将永远不会为pe 1。

在一个(几乎)无限循环中有一个(几乎)无限循环,两个循环的停止条件几乎相同

其中一个将“永远”运行,当它触发停止条件时,另一个也将停止,只显示一个正在运行的循环

2圈

enter infinite loop1
    do some stuff one once
    enter infinite loop2
        do some stuff two "forever"
当你移除内环时

enter infinite loop1
    do some stuff one "forever"
当你移除外环时

enter infinite loop2
    do some stuff two "forever"
在一个(几乎)无限循环中有一个(几乎)无限循环,两个循环的停止条件几乎相同

其中一个将“永远”运行,当它触发停止条件时,另一个也将停止,只显示一个正在运行的循环

2圈

enter infinite loop1
    do some stuff one once
    enter infinite loop2
        do some stuff two "forever"
当你移除内环时

enter infinite loop1
    do some stuff one "forever"
当你移除外环时

enter infinite loop2
    do some stuff two "forever"

i
有两个声明?你认为这与此有关吗?我敢问为什么
i
是一个函数参数吗?只是好奇。不管怎样,实际的样本数据和这个函数应该做什么的期望应该是你发布的问题的一部分。内部while循环看起来是坏的。该循环将y drop on stream error/EOF,在后一种情况下,外部循环也结束了。您可以在
时嵌套任意多个
,只要它们的go条件相关。好的,我们可以用不同的方式编写代码,但函数仍然相同吗?有两个
i
的声明?您认为它必须这样做吗我敢问为什么
I
是一个函数参数吗?我只是好奇。不管怎样,实际的样本数据,以及这个函数应该做什么的期望应该是你发布的问题的一部分。内部while循环看起来是坏的。这个循环只会出现流错误/EOF,在后一种情况下,这个问题就结束了外部循环也一样。您可以根据需要嵌套任意多个
while
,只要它们的go条件相关。好的,我们可以用不同的方式编写代码,但函数仍然相同吗?第一个while循环对每个字符进行计数,第二个循环将数字相加。是的,文件中既有数字也有文本新的配置是,如果您的文件在每一行上都有一个类似char number1 number2…的字符,那么在第二个循环中,您应该检查文件的两端以及行的末尾,以开始下一个字符的循环。第一个while循环对每个字符进行计数,第二个循环将数字相加。是的,有数字和文件中的文本尝试了新的配置,如果您的文件在每一行上都有类似char number1 number2…的内容,那么在第二个循环中,您应该检查文件的两端以及行的末尾,以启动下一个char的循环。