gpt4 book ai didi

C 程序 : Do-while loop to run program again not working properly

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

我的程序旨在对文本文件中的记录进行排序,但我的主要问题是让 main 函数询问用户是否愿意再次运行该程序以读取和写入另一个文件。我现在的程序,当用户再次输入1运行时,跳过第一题进入程序阅读。这是为什么?感谢您的帮助!这里只是我的主要功能:程序只在第一次运行时编译。

int main()
{
int fieldCount = 0;
int lineCount = 0;
char file[STR_LEN];
char filepath[STR_LEN];
char** fields = NULL;
char** lines = NULL;
int recCount = 0;
Person **sortedRecs = NULL;
int x;

do {
printf("Enter path of the file to read: ");
gets(filepath);
printf("Enter path to copy to: ");
gets(file);
fields = readFieldsDynamic(filepath, &fieldCount);
lines = readLinesDynamic(filepath, &lineCount);
recCount = getPersons(fields, fieldCount, &sortedRecs);
if (recCount && lines && sortedRecs && (recCount <= lineCount)) {
writeRecsToFile(file, sortedRecs, recCount, lines, lineCount);
printf("Sorted records are written in %s\n", file);
}
if (fields) {
freePointerToChars(fields, fieldCount);
}
if (lines) {
freePointerToChars(lines, lineCount);
}
if (sortedRecs) {
freeRecs(sortedRecs, recCount);
}
printf("Enter 1 to run program again: ");
scanf("%d%*c", &x);
} while (x == 1);
return 0;
}

最佳答案

你可以做的是添加一个 while 循环来“吃掉”stdin 流中剩余的所有换行符,以防止下一个 getchar 不阻塞真正的用户输入.

while ((ch=getchar()) != EOF && ch != '\n')
;

另外请不要在您的代码中使用gets。请尝试使用 fgets

关于C 程序 : Do-while loop to run program again not working properly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33486168/

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