我正在从一个文件扫描到并行数组。 我成功扫描了字符串,但是整数和浮点数无法正确扫描! 这里出了什么问题??? Num,human和cool是在main函数中声明的数组。
hello.txt中的记录示例:
Angela, Merkel, 50, 10, 9.1
void read(int *lines, char first[ENTRY][FIRST], char last[ENTRY][LAST], int *num, int *human, float *cool)
{
FILE *ifile;
int i;
ifile = fopen("hello.txt", "r");
fscanf(ifile, "%[^,] %*c %[^,] %*c %d %*c %d %*c %f", first[0], last[0], &num[0], &human[0], &cool[0]);
printf("%s", first[0]);
printf("%s\n", last[0]);
printf("%d\n", num[0]);
printf("%d\n", human[0]);
printf("%f", cool[0]);
fclose(ifile);
}
答案 0 :(得分:0)
尝试
$Metadata = New-Object System.Management.Automation.CommandMetaData (Get-Command Connect-MSOLService)
$Contents = [System.Management.Automation.ProxyCommand]::Create($Metadata)
答案 1 :(得分:0)
首先,对于scanf
系列函数,空格与输入中的任何数量的空格(包括无空格)匹配,也不使用%*c
,这是没有必要的。其次,您需要在格式字符串中指定逗号以成功扫描字段。第三,当scanf
总是检查其返回值以确保输入预期的数字字段时。试试这个修复:
void read(int *lines, char first[ENTRY][FIRST], char last[ENTRY][LAST], int *num, int *human, float *cool)
{
FILE *ifile;
ifile = fopen("hello.txt", "r");
if (ifile == NULL) return;
int ret = fscanf(ifile, "%[^,], %[^,], %d, %d, %f", first[0], last[0], &num[0], &human[0], &cool[0]);
if (ret != 5) { // input file does not match the format
return;
}
printf("%s ", first[0]);
printf("%s\n", last[0]);
printf("%d\n", num[0]);
printf("%d\n", human[0]);
printf("%f\n", cool[0]);
fclose(ifile);
}