簡體   English   中英

2 while 循環在 C 中的函數中

[英]2 while loops in a function in 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(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");
            }
        }
    }
}

我已經運行了你的程序,似乎第二個 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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM