gpt4 book ai didi

c++ fscanf %c 无法正常工作

转载 作者:行者123 更新时间:2023-11-30 18:13:35 24 4
gpt4 key购买 nike

我有一个包含以下内容的输入文件:

123 A 012345 ABC

My code is:

int main(void)
{
FILE* fin;
FILE* fout;
int l;
char d;
char pk[ASD];
char cd[BCD];

fin = fopen("a.i1", "r");
fscanf(fin, "%d %c %s %[^\n]", &l, &d, pk, cd);
fclose(fin);

fout = fopen("b.out", "w+");
fprintf(fout, "%d %c %s %s", l, d, pk, cd);
fclose(fout);
return 0;
}

我的输出是:

123   012345 ABC

(in notepad++ between 123 and 012345 is NULL) Why "d" does not get value 'A'?

If I read like this:

fscanf(fin, "%d%c %s %[^\n]", &l, &d, pk, cd);

我得到了这个:

10   B 01010112345 ABBA

但我不知道为什么。

最佳答案

实际上 fscanf(fin,"%c",&c) 在您的情况下输入一个字符,该字符是空格(就在输入文件中的 123 之后),因此当

fscanf(fin, "%d %c %s %[^\n]", &l, &d, w, m); 

已执行

l contains 123, 
d contains (space),
w contains "A" (next string after space)
and
m contains "012345 ABC" (because delimiter is '\n')

所以基本上

fprintf(fout, "%d %c %s %s", l, d, w, m);

将打印预期值。但我假设值没有存储在您期望的变量中。

检查您的fprintf语句,一旦您可能错过了打印w,因此“A”没有打印

关于c++ fscanf %c 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23739528/

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