Remove newline character function (C)

Permalänk
Avstängd

Remove newline character function (C)

Hej!

Jag vill göra en funktion som tar bort det äckliga newline-karaktären vid användning av fgets. Såhär ser koden ut:

void removeAnnoyingNewlineCharacter(char* theString){ char* theCurrentChar = theString; char c1 = '\n'; char c2 = '\0'; while (*theCurrentChar != c1 || *theCurrentChar != c2){ printf("%c", *theCurrentChar); theCurrentChar++; } if (*theCurrentChar == '\n') *theCurrentChar = '\0'; }

När jag kör programmet så stannar inte while-loopen när ett newline hittats, utan det fortsätter. Någon som vet varför?

Permalänk
Medlem
Permalänk

@Kossamu: I ditt villkor testar du *theCurrentChar != '\n' eller *theCurrentChar != '\0' och det kommer vara sant för alla värden på *theCurrentChar och loopen kommer att fortsätta ett varv till.

Permalänk
Avstängd
Skrivet av Ingetledigtnamn:

@Kossamu: I ditt villkor testar du *theCurrentChar != '\n' eller *theCurrentChar != '\0' och det kommer vara sant för alla värden på *theCurrentChar och loopen kommer att fortsätta ett varv till.

Tackar Det gäller att få till logiken

EDIT: && fixar det

Permalänk
Medlem

void remove_n(char *str) { while(str++) if (*str == '\n') { *str = '\0'; break; } }

Du kanske kan använda något likt detta istället.. Har inte programmerat i C på flera år så det kanske finns ett bättre sätt att göra det på

Permalänk
Avstängd
Skrivet av al10001:

void remove_n(char *str) { while(str++) if (*str == '\n') { *str = '\0'; break; } }

Du kanske kan använda något likt detta istället.. Har inte programmerat i C på flera år så det kanske finns ett bättre sätt att göra det på

Här blir det problem om newline inte skulle finnas i arrayen Det är därför jag har *str != '\0'

EDIT: Dock så blir det ju problem ifall det inte finns varken \n eller \0 i strängen heller för min kod

Permalänk
Avstängd

Kan tillägga att jag pratade med en lärare som kom med en finurligt sätt att göra det på.

if (str[strlen(str)] == '\n') str[strlen(str)] = '\0';