Jak dodać linie za pomocą sprintf?
Mam poważny problem ze sprintem.
Załóżmy, że mój fragment kodu to:
sprintf(Buffer,"Hello World");
sprintf(Buffer,"Good Morning");
sprintf(Buffer,"Good Afternoon");...
Około stu sprintów ...
Jeśli mi się spodoba, wszystko zostanie przepisane.
Jak uniknąć nadpisania przez sprintf. Jeśli podam printf na końcu, chcę zobaczyć wszystkie linie.
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
16 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
i oczywiście potrzebujesz odpowiedniego bufora.
Anonimowy użytkownik
Potwierdzenie od:
Oto wersja z pewną tolerancją błędów. Jest to przydatne, jeśli nie przejmujesz się tym, kiedy zdarzają się błędy, o ile możesz kontynuować swoją wesołą drogę, gdy się pojawią.
Anonimowy użytkownik
Potwierdzenie od:
const int MAX_BUF = 1000;
char* Buffer = malloc(MAX_BUF);int length = 0;
length += snprintf(Buffer+length, MAX_BUF-length, "Hello World");
length += snprintf(Buffer+length, MAX_BUF-length, "Good Morning");
length += snprintf(Buffer+length, MAX_BUF-length, "Good Afternoon");
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
i http://www.cplusplus.com/refer ... ncat/
?
Anonimowy użytkownik
Potwierdzenie od:
Może być łatwiej wyabstrahować to do własnej funkcji (zakłada się C99 poniżej):
Używałbyś tego w ten sposób:
itp.
Funkcja zwraca wartość z , która w większości implementacji jest liczbą bajtów zapisanych w miejscu docelowym. Jest kilka dziur w tej implementacji, ale powinno dać ci kilka pomysłów.
Anonimowy użytkownik
Potwierdzenie od:
Jeśli dynamiczna pamięć masowa jest bardziej odpowiednia dla twojego przypadku, możesz skorzystać z doskonałej sugestii Liama, aby użyć :
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
http://www.cplusplus.com/reference/cstring/strcat
http://www.cplusplus.com/reference/cstring/strcat/
/
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Mały, kompletny przykład kodu
Korzystanie z płaskiej, zwykłej biblioteki standardowej
stdio
tylko
OUTPUT:
Kochamy kodowanie
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
strcat
https://linux.die.net/man/3/strcat
( , „ ”) jako opcja.
Anonimowy użytkownik
Potwierdzenie od:
char s[100] = "";sprintf(s, "%s%s", s, "s1");sprintf(s, "%s%s", s, "s2");sprintf(s, "%s%s", s, "s3");printf("%s", s);
Ale rozważ możliwe przepływy buforowe!