此问题已在此处有答案:
Lots of stray errors - "error: stray ‘\210’ in program in C++" [duplicate](1个答案)
9年前关闭。
当尝试使用GCC编译这个简短的C程序时,我得到了以下错误:
expected ‘)’ before numeric constant
make: *** [file3_5.o] Error 1
stray ‘\210’ in program
stray ‘\227’ in program
stray ‘\342’ in program
Eclipse 4.2(Juno)将所有这些错误都指向一行代码:
while(fgets(line ,STRSIZE∗NFIELDS, fp))
使用以下语句进行编译:
gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"file3_5.d" -MT"file3_5.d" -o "file3_5.o" "../file3_5.c"
下面是我正在尝试编译的程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STRSIZE 100
#define NFIELDS 9
int main()
{
char inputfile[] = "/home/ty/workspace/OpenCoursware_Exercises/Assign_ /stateoutflow0708.txt";
/* Define all of the fields */
char state_code_org[STRSIZE];
char country_code_org[STRSIZE];
char state_code_dest[STRSIZE];
char country_code_dest[STRSIZE];
char state_abbrv[STRSIZE];
char state_name[STRSIZE];
char line[STRSIZE*NFIELDS];
int return_num = 0;
int exmpt_num = 0;
int aggr_agi = 0;
long total = 0;
/* File related */
int fields_read = 0;
FILE* fp = fopen(inputfile, "r");
if(fp == NULL)
{
fprintf(stderr, "Cannot open file\n");
exit(-1);
}
/* Skip the first line */
fgets(line, STRSIZE*NFIELDS, fp);
/* Print the header */
printf ("%-30s,%6s\n", "STATE", "TOTAL");
printf("---------------------------------------\n");
while(fgets(line, STRSIZE∗NFIELDS, fp))
{
/* Parse the fields */
fields_read = sscanf(line,
"%s %s %s %s %s %s %d %d %d",
state_code_org,
country_code_org,
state_code_dest,
country_code_dest,
state_abbrv,
state_name,
&return_num,
&exmpt_num,
&aggr_agi);
if(strcmp(state_code_org, "\"25\"") == 0)
{
printf("%-30s, %6d\n", state_name, aggr_agi);
total += aggr_agi;
}
}
/* Print the header */
printf(" ----------------------------------------\n");
printf("%-30s,%6lu\n", "TOTAL", total);
fclose(fp);
return 0;
}
3条答案
按热度按时间rbl8hiat1#
你的
∗
不是乘法运算符*
,它们可能看起来很相似,但是是不同的字符,并且gcc不识别 *twh00eeo2#
应该是
(是否看到两者之间的差异取决于用于显示字符的字体)。
第一个中的 * 不是用于乘法运算符的字符,它是this character here。
2ledvvac3#
STRSIZENFIELDS中的“”字符不是常规的 *(ASCII值42),而是Unicode字符“ASTERISK OPERATOR”。
这就是编译器试图通过抱怨源代码中的杂散字符来告诉您的。