Jestem początkującym C i to jest mój kod C:Jak zwrócić ciąg znaków w moim kodzie C?
#include <stdio.h>
#include <stdlib.h>
main()
{
printf("Hello world !\n");
return 'sss';
}
który pokaże błąd,
tak jak zwracać ciąg w kodzie C?
Jestem początkującym C i to jest mój kod C:Jak zwrócić ciąg znaków w moim kodzie C?
#include <stdio.h>
#include <stdlib.h>
main()
{
printf("Hello world !\n");
return 'sss';
}
który pokaże błąd,
tak jak zwracać ciąg w kodzie C?
Jeśli chcesz zwrócić ciąg znaków z funkcji (innej niż główna), powinieneś zrobić coś takiego.
#include <stdio.h>
const char * getString();
int main()
{
printf("hello world\n");
printf("%s\n", getString());
return 0;
}
const char * getString()
{
const char *x = "abcstring";
return x;
}
Niestety nie ma sposobu, aby to zrobić.
Można dodać coś do końca programu c jak:
int main()
{
int err = 0; // 0 is "success" is most c programs
printf("hello world!\n");
switch(err)
{
case 0:
printf("program shutdown succesfully!\n");
break;
case 1:
printf("we had an issue somewhere. please fix your input data\n");
break;
//case 2, 3, etc...
};
return err;
}
Możesz być w stanie wykorzystać zmienne środowiskowe za to. Nie jestem tego pewien.
Nie zwracasz ciągu. Aplikacje kończą się kodem wyjścia.
Konwencjonalnie, wyjście z wynikiem 0 zawsze pokazuje, że twoja aplikacja zakończyła pracę bez błędu/zakończona. Zwracasz liczbę całkowitą inną niż 0, aby pokazać, że twoja aplikacja zakończyła się nienormalnie.
Możesz rzucić wyjątek i obsłużyć go za pomocą metody rejestrowania wyżej w stosie wywołań lub możesz po prostu zwrócić coś innego niż 0 i upewnić się, że zostało to udokumentowane w informacjach o wydaniu, co oznacza każda liczba całkowita błędu.
Można to zrobić w prosty sposób, aby uzyskać scanf
. Innymi słowy:
void foo(char **value_to_return) {
*value_to_return = malloc(256); // store 256 chars
strcpy(*value_to_return, "deposited string");
}
int main() {
char *deposit;
foo(&deposit);
printf("%s", deposit);
return 0;
}
Magia jest słowem kluczowym static
który zachowuje zawartość pamięci łańcucha nawet po zakończeniu funkcji. (Można traktować je jak rozszerzenie zakresu zmiennej.)
Kod ten trwa jeden znak za każdym razem, a następnie łączy je w ciąg i zapisuje go do pliku:
#include <stdio.h>
#include <conio.h>
char* strbsmallah()
{
static char input[50];
char position =0, letter;
scanf("%c",&letter);
while (letter != '~') { // press '~' to end your text
input [position]=letter;
++position;
scanf("%c",&letter);
}
input[position]='\0';
char *y;
y = (char*) &input;
//printf("%s\n ",y);
return y;
}
int main() {
printf("\n");
FILE *fp;
fp = fopen("bsmallah.txt", "w+");
fprintf(fp, strbsmallah());
while (!_kbhit());
return 0;
}
'main' musi powrócić 'int', no ifs, ands, or buts. Czego dokładnie oczekujesz od tego ciągu? (Chociaż "ciąg" jest tak naprawdę stałą znaku, ponieważ używa '' 'ograniczników zamiast' '' –
Błąd? Skopiuj dokładnie komunikat o błędzie Dokładnie, czego się spodziewałeś? –
Brakuje średnika po deklaracji return, to prawdopodobnie jest błąd.Powrotu '' sss'' z 'main' będzie technicznie działało (ponieważ jest to' int'), ale zdecydowanie nie jest to, co jest pożądane –