До сих пор мне была предоставлена часть программы сборки для задания, которое начиналось с таких строк, как: main: mov %a,0x04 ; sys_write
. В некоторых строках есть метка (это слово с точкой с запятой на конце), а некоторые - нет. Все после ;
является комментарием и его нужно удалить. Пробелы нужно удалить и вернуть обратно, чтобы готовый продукт выглядел примерно так: main: mov %a,0x04
. Я потратил много дней на это и подумал, что вы, ребята, знали, как помещать пробелы, потому что в настоящее время это выглядит так: main:mov%a,0x04
. Любой надежный способ повсеместного добавления белых пространств был бы оценен.Добавление пробелов обратно в мою программу сборки
int i;
char line[256];
while(fgets(line,256,infile) != NULL)
{
char label[256];
int n = 0;
for(i=0; i<256; i++)
{
if(line[i] == ';') // checks for comments and removes them
{
label[n]='\0';
break;
}
else if(line[i] != ' ' && line[i] != '\n')
{
label[n] = line[i]; // label[n] contains everything except whitespaces and coms
n++;
}
}
char instruction[256];
for(n =0; n<strlen(label);n++)
{
//don't know how to look for commands like mov here
// would like to make an array that puts the spaces back in?
}
// checks if string has characters on it.
int len = strlen(label);
if(len ==0)
continue;
printf("%s\n",label);
}
fclose(infile);
return 0;
':' является двоеточие, ';' является ** ** полу двоеточие. – Olaf
Да, так что все после полуплотности не должно быть напечатано. Слово перед двоеточием называется ярлыком, например main: или name: etc ... – Jason
Возможно, вы должны удалить только лишние пробелы (то есть один за другим), а не пытаться вернуть их обратно ... – Jester