从文件中读取多个字符串

时间:2012-06-14 14:47:44

标签: c c-strings

无法解决这个问题,尝试将两个名称fscanf为两个char []

if (numpairs == 2){
            fscanf("%s %s", malename1[MAX], malename2[MAX]); //read in names 
            printf("%s %s", malename1[MAX], malename2[MAX]); //print out names

这是崩溃并给我“警告:警告:从不兼容的指针类型传递'fscanf'的参数1

编辑:MAX定义为20,而malename1 [MAX + 1] malename2 [MAX + 1](+1代表null)

编辑:我已经阅读了一些工作,怎么能占用一个空间来结束malename1的读入?我正在阅读Chris for malename1和Ryan for malename2但是对于malename1它会扫描ChrisRyan

2 个答案:

答案 0 :(得分:1)

fscanf()的第一个参数是FILE*,而不是char*

假设您打算使用scanf(),代码会尝试将char视为char[](假设malename1malename2的类型为{{ 1}},如上所述)。改为:

char[]

scanf("%s %s", malename1, malename2); printf("%s %s", malename1, malename2);

fscanf()

请注意,您还可以添加要读取的最大长度以防止缓冲区溢出:

fscanf(fp, "%s %s", malename1, malename2); /* where 'fp' is a valid 'FILE*'. */

答案 1 :(得分:0)

如果malename1malename2char *类型的字符串。然后所需的陈述应该是:

fscanf(fp, "%s %s", malename1, malename2); //fp is file pointer

http://www.cplusplus.com/reference/clibrary/cstdio/fscanf/