Mój program wygląda następująco;Dlaczego użycie niewłaściwego specyfikatora formatu w C powoduje awarię mojego programu w systemie Windows 7?
#include <stdio.h>
#include <string.h>
int main()
{
char string[] = "Gentlemen start your engines!";
printf("That string is %s characters long.\r\n", strlen(string));
return 0;
}
Kompiluję pod gcc i chociaż nie daje mi żadnych błędów, program ulega awarii za każdym razem, gdy go uruchomię. Kod wydaje się być dobry z przykładów, które widziałem. Byłoby świetnie wiedzieć, czy robię coś złego.
Dzięki.
Dziękuję wszystkim. Powinienem był to zauważyć, dopiero zaczynałem od C i bawiłem się z programami tekstowymi tylko za pomocą łańcuchów tylko do tej pory, więc% s właśnie automatycznie przyszło na myśl. – austinprete
+1, ponieważ nauczyłem się, że powinienem używać% zu cały czas zamiast tylko% u lub nawet% d –
Jeśli używasz GCC, podkręć swoje błędy za pomocą '-Wall' lub może' -Wextra' lub może '-Werror'. GCC może sprawdzić ciąg formatu i ostrzegać o błędnych argumentach dla funkcji 'printf'-,' scanf'-, 'strftime'- i' strfmon'-like. –