Jak odstranit nesprávné znaky na konzoli a co je vyvolává?
Fórum › C / C++
Dokončování programu - neprávné znaky na konzoli
#1 oxidián
Pravdepodobne to vyvolava to, ze pises v UTF-8, ale konzole je ve vetsine pripadu na neco jako cp852 (tj. ani cp1250 se nezobrazi dobre)
Melo by jit ale v ramci programu zmenit kodovani na UTF, a pak by to mohlo zacit fungovat. Mozna jeste nastavit font jako Lucida nebo tak.
Ještě mám dotaz jak nastavit pointer ii aby ukazoval na strukturu i?
getJulianDate totiž pracuje s pointerem na INPUTS.
void getSolarPosition(INPUTS i, SOLPOS *o) {
if ( !i.JulianDate )
{
INPUTS * ii;
i.JulianDate = getJulianDate(ii);
}
#6 gna
čistě náhodou jsem si na to vzpomněl a zkoušel jsem
INPUTS * ii; &i = ii;
Jenže to mi nefungovalo, to píše chybu
U:\C\Solrad\solrad\main.c|69|error: lvalue required as left operand of assignment|
V noci mě napadlo ještě toto:
i.JulianDate = getJulianDate(&i);
ale pak jsem na to zapomněl bo už jsem měl vyplý komp. A tys to myslel takto. Tak jo, funguje to. Dík
Nakonec jsem to předělal takto:
void getSolarPosition(INPUTS * inputs, SOLPOS *o) {
INPUTS i = *inputs;
if ( !i.JulianDate )
(*inputs).JulianDate = getJulianDate(inputs); // date must be set to calculate Julian Date
protože dále ve funkci přistupuju ke členům pro čtení i přímo a abych to nemusel psát takto (*i) tak jsem to změnil.. *Inputs pro zápis použiju jenom jednou.
Ten zápis je nutný, jinak se mi vlastně ta hodnota ztratí.
#11 KIIV
To je ale špatně, JulianDate nebude uloženo.
Takto to je dobře:
void getSolarPosition(INPUTS * inputs, SOLPOS *o) {
INPUTS i = *inputs;
if ( !i.JulianDate )
inputs->JulianDate = getJulianDate(inputs); // date must be set to calculate Julian Date
double T=( i.JulianDate-2451545.0)/36525.0;
#12 oxidián
samozrejme ze bude, bude dokonce videt i venku, jelikoz se upravuje polozka na adrese input.
#include <stdio.h>
struct Test
{
int a;
int b;
};
void uprav(struct Test * test);
int main()
{
struct Test neco = {0, 2345};
printf("neco.a==%d a neco.b==%d\n", neco.a, neco.b);
uprav(&neco);
printf("neco.a==%d a neco.b==%d\n", neco.a, neco.b);
return 0;
}
void uprav(struct Test * test)
{
if (! test->a)
{
test->a = test->b - 100;
}
}
A vysledek:
neco.a==0 a neco.b==2345
neco.a==2245 a neco.b==2345
Muzes si to i ozkouset na teto adrese: https://goo.gl/t5PzLS
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Znaky v konzoli — založil code
Jak vypsat Unicode znaky v konzoli — založil p3can
Ovládat konzoli přes jinou konzoli — založil kkk
Automatické dokončování - VisualStudio 2008 — založil Michal
článok alebo rady o dokončovaní projektu vo VS — založil yterbium
Moderátoři diskuze