2010-02-22 92 views
2

我如何读取输入一个字符串,同时调用另一个函数C.我想这会工作,但我的输出挂起:同时从文件中读取一个字符串用C

#define BUFFMT "%255" 
#define LINE_LEN 256 
#define START_COUNT 1 

// filename is declared in the main file elsewhere. I know the file opens since I tried an //old method I use to read one line at time using fgets, but I didn't know how to do one //string at a time. Thanks. 
FILE *OpenFile(const char *fileName) 
{ 
    FILE *fptr; 
    if ((fptr = fopen(fileName, "r")) == NULL) { 
     fprintf(stderr, "Error opening file %s, exiting...", fileName); 
     exit(EXIT_FAILURE); 
    } 
    return fptr; 
} 

LIST *CreateList(FILE *fp) 
{ 
    char buf[LINE_LEN]; 

    while (scanf(BUFFMT"s", buf) != EOF) { 
     printf("%s: \n", buf); 
    } 
} 
+0

你如何在主程序中调用这些函数? – 2011-11-03 01:02:44

回答

4

scanf()要从终端读取,所以它会等待您输入您的输入。改为使用fscanf(fp, BUFFMT"s", buf)

2

尝试这不是你的scanf函数:

fgets (buf, sizeof (buf), fp) 
0

您是否尝试过使用fgets()

fgets()

fgets()从流中读取长度为1的字符 并将它们存储在缓冲区中。 与fgets()存储空字符 (“\ 0”)的最后一个字符后读取 入缓冲区,并返回“缓冲” 如果一切正常,或 错误或文件结尾NULL。

相关问题