String i C?

Tags:    c string variabler

Simpelt spørgsmål, men jeg synes ikke lige jeg kan finde et svar på det, måske er jeg blind :o

En char var; er jo smal, eventuelt char var[length]; men den er jo stadig kort.

Hvis nu man vil have noget text lagret i en variable, hvad bruger man så i C? Ex:


some_var = "This is a guideline to something which is very important, so the text is very long which is annoying. I want this text in a var so it is easily changed rather than directly throwing it into printf()";


printf("%WHAT_HERE?", some_var);





4 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Du kan også lade compileren lave dit array stort nok:
Fold kodeboks ind/udC kode 




Den simple udgave:
char str[] = "Text";
printf("%s", str);

I C benyttes tegnet '\0' (null) til at fortælle at nu er strengen slut, eksempel:
char str[256] = "Hej med dig\0";
str = "hop";
printf("%s", str);
str = "hop\0"; // samme som: str[3] = '\0';
printf("%s", str);

Mere information kan findes på:
http://www.cprogramming.com/tutorial/c/lesson9.html
http://linux.die.net/man/3/printf

Sidder desværre lige i Windows (mangler et udviklingsmiljø) og mit C er en lille smule rusten, så jeg undskylder hvis der skal ændres på et par småting i ovenstående eksempler.



Dit svar gav mig en ny fejl som jeg kunne søge på, den ledte mig frem til:


char str[256];

strcopy(str, "string text");

Og det virker :) Mange tak for hjælpen.



Det skal lige siges at hvis du skriver strengen direkte sådan her:
Fold kodeboks ind/udC kode 

Så indsættes der automatisk et \0 til sidst bagefter. Den skal du selv huske at gøre plads til. F.eks. er dette IKKE sikkert at gøre:
Fold kodeboks ind/udC kode 

Hvis du prøver at udskrive dette er der en god chance for at du får en fejl eller at der kommer noget ekstra i outputtet. Dette herimod er fint:
Fold kodeboks ind/udC kode 






t