gpt4 book ai didi

c - 为什么 my_getline() 导致系统挂起?

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

此程序试图将文本文件的内容保存到字符变量数组中。然后应该使用 my_getline() 来打印字符数组的内容。我已经测试过,发现内容实际上已保存到 char *text 中,但我不知道如何使用 my_getline 打印 char *text 的内容(). my_getline 是我们在类里面写的一个函数,我需要在这个程序中使用它。当我尝试按照所教的方式调用它时,它 1 被打印到终端,但终端只是等待,没有打印任何其他内容。任何指导将不胜感激。另外,如果我遗漏了任何有用的信息,请告诉我。

/*   Include the standard input/output and string libraries             */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

/* Define the maximum lines allowed in an input text and NEWLINE for getline funct. */
#define MAXPATTERN 15
#define MAXFILENAMELENGTH 15
#define NEWLINE '\n'

/* function prototypes */
void my_getline(char text[]);
int find_string(char text[], char pattern[], int length_text, int length_pattern);

int main()
{
FILE *fp;
long lSize;
char *text;
char fileName[MAXFILENAMELENGTH], pattern[MAXPATTERN];
char c;
int length_text, length_pattern, j, lineNumber = 1;

printf("Enter file name: ");
scanf("%s", fileName);

fp = fopen(fileName, "r");
if (fp == NULL)
{
printf("fopen failed.\n");
return(-1);
}

fseek(fp, 0L, SEEK_END);
lSize = ftell(fp);
rewind(fp);

/* allocate memory for all of text file */
text = calloc(1, lSize + 2);
if(!text)
{
fclose(fp);
fputs("memory allocs fails", stderr);
exit(1);
}

/* copy the file into text */
if(1 != fread(text, lSize, 1, fp))
{
fclose(fp);
free(text);
fputs("Entire read fails", stderr);
exit(1);
}
text[lSize + 1] = '\0';

printf("%s has been copied.\n", fileName);

rewind(fp);
printf("%d ", lineNumber);
for (j = 0; (j = getchar()) != '\0'; j++)
{
my_getline(text);
printf("%d %s\n", j+1, text);
}


printf("Enter the pattern you would like to search for: ");
scanf("%s", pattern);
printf("\nYou have chosen to search for: %s\n", pattern);

fclose(fp);
free(text);
return(0);
}

void my_getline(char text[])
{
int i = 0;
while ((text[i] = getchar()) != NEWLINE)
++i;
text[i] = '\0';
}

最佳答案

您的函数导致系统挂起,因为您正在调用 getchar (),返回标准输入的下一个字符。这真的是您想要的吗?

此时,您的程序正在等待用户的输入。尝试在控制台窗口中键入并按下以查看它从“挂起”状态恢复

关于c - 为什么 my_getline() 导致系统挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33377573/

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