想要使用scanf阅读,但如果我遇到',''\ 0'(换行符)或EOF
我想停止阅读我不确定如何停止实现这一点。
我正在使用
char * aBuff;
char * bBuff;
char * cBuff;
//read in the first three lines and put them into char arrays
//while (scan() != (',' || '\0' || EOF)) //was trying to put it into a while loop, wasn't sure
scanf("%s", aBuff);
scanf("%s", bBuff);
scanf(%s, cBUff);
我打算接受输入并将它们放入单独的数组中。基本上将输入直到a或新行并将该数据放入数组并继续此过程直到文件结束。
答案 0 :(得分:2)
scanf()
,','
或'\0'
之前, EOF
不是一种实用的方法。使用fgetc()
。
最大的问题是以'\0'
的格式指定scanf()
。示例:格式为"%[^,\0]"
时,scanf()
仅在嵌入式"%[^,"
停止时显示'\0'
。所以使用无效的格式说明符 - >未定义的行为。
size_t ReadX(char *dest, size_t size) {
size_t len = 0;
if (size) {
while (--size > 0) {
int ch = fgetc(stdin);
if (ch == 0 || ch == ',' || ch == EOF) break; // maybe add \n too.
*dest[len++] = ch;
}
*dest[len] = '\0';
}
return len; // or maybe return the stopping ch
}
scanf()
:
scanf("%[\1\2\3...all_char_codes_min_char_to_max_char_except_,_and\0]%*c", &s);
答案 1 :(得分:1)