[英]How to remove single character from line read from file in C
如何從“@2”中刪除“@”是一個 .asm 文件? 從文件中讀取時,我的輸出當前不正確,但是當僅使用“2”時,它會產生正確的二進制結果。
FILE *fp;
char buffer[256];
fp = fopen("Add.asm", "r");
if(fp == NULL){
printf("Error opening file\n");
}
else{
while(fgets(buffer, 256, fp) != NULL){
buffer[strcspn(buffer, "\r\n")] = 0;
printf("Buffer:");
printf("%s\n",buffer);
if(aOrC(buffer) == true){
int changer = stringToInt(buffer);
printf("%s\n",intToBinary(changer));
} else if(aOrC(buffer) == false){
char* jump = jumpBits(buffer);
char* dest = destBits(buffer);
char* comp = compBits(buffer);
char* finalBits = finalBinaryC(comp, dest, jump);
printf("%s\n", finalBits);
}
}
fclose(fp);
}
Add.asm 文件位於 nand2tetris 項目下方。
@2
D=A
@3
D=D+A
@0
M=D
根據您的輸出, @
始終位於字符串的開頭。 所以你可以很容易地做到這一點:
// str contains the string "@2"
puts(str + (str[0] == '@' ? 1 : 0));
如果你想在某個隨機位置刪除@
,那么你應該寫一個這樣的函數
char *remove_char(char *src, char c)
{
if(src == NULL)
return NULL;
char *p = strchr(src, c);
if(p == NULL)
return src; // c not found
// removing c
memmove(p, p+1, strlen(p));
return src;
}
然后你可以這樣稱呼它
char line[] = "abc@def";
puts(remove_char(line, '@'));
這將打印abcdef
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.