Syntaxfehler : fehlendes ';' vor 'type' IM C
Ich versucht zu beenden mein code.nach dem reservieren von Speicher für die arrays. ich habe paar Fehler und weil von Ihnen, ich kann nicht den code zu kompilieren.
Ich möchte Ihre Hilfe, um das Programm fertig danke!
1>c:\users\roni\documents\visual studio 2010\projects\lb11_12\lb11_12\lb_11_12_02.c(27): error C2143: syntax error : missing ';' before 'type'
1>c:\users\roni\documents\visual studio 2010\projects\lb11_12\lb11_12\lb_11_12_02.c(28): error C2065: 'text2' : undeclared identifier
1>c:\users\roni\documents\visual studio 2010\projects\lb11_12\lb11_12\lb_11_12_02.c(28): warning C4047: '=' : 'int' differs in levels of indirection from 'char **'
1>c:\users\roni\documents\visual studio 2010\projects\lb11_12\lb11_12\lb_11_12_02.c(29): error C2065: 'text2' : undeclared identifier
1>c:\users\roni\documents\visual studio 2010\projects\lb11_12\lb11_12\lb_11_12_02.c(36): error C2065: 'text2' : undeclared identifier
1>c:\users\roni\documents\visual studio 2010\projects\lb11_12\lb11_12\lb_11_12_02.c(36): error C2109: subscript requires array or pointer type
1>c:\users\roni\documents\visual studio 2010\projects\lb11_12\lb11_12\lb_11_12_02.c(38): error C2143: syntax error : missing ';' before 'type'
1>c:\users\roni\documents\visual studio 2010\projects\lb11_12\lb11_12\lb_11_12_02.c(47): error C2065: 'text2' : undeclared identifier
1>c:\users\roni\documents\visual studio 2010\projects\lb11_12\lb11_12\lb_11_12_02.c(47): error C2109: subscript requires array or pointer type
1>c:\users\roni\documents\visual studio 2010\projects\lb11_12\lb11_12\lb_11_12_02.c(47): error C2198: 'gets' : too few arguments for call
1>c:\users\roni\documents\visual studio 2010\projects\lb11_12\lb11_12\lb_11_12_02.c(50): error C2065: 'text2' : undeclared identifier
1>c:\users\roni\documents\visual studio 2010\projects\lb11_12\lb11_12\lb_11_12_02.c(50): warning C4047: 'function' : 'char **' differs in levels of indirection from 'int'
1>c:\users\roni\documents\visual studio 2010\projects\lb11_12\lb11_12\lb_11_12_02.c(50): warning C4024: 'PrintStr2' : different types for formal and actual parameter 1
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Dies ist mein code
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <malloc.h>
#define LINES 4
#define length 100
void SortText1(char **text1);
void SortText2(char **text2);
void PrintStr1(char **text1);
void PrintStr2(char **text2);
void main (){
int i;
char **text1;
text1=(char **)malloc(LINES*sizeof(char *));
if(!text1){ //Terms - if there is not enough memory,print error msg and exit the program.
printf("alloc failed\n");
return ;
}
for (i=0 ; i<LINES; i++){
text1[i] =(char*) malloc(length*sizeof(char));
}
char **text2;
text2=(char **)malloc(LINES*sizeof(char *));
if(!text2){ //Terms - if there is not enough memory,print error msg and exit the program.
printf("alloc failed\n");
return ;
}
for (i=0 ; i<LINES; i++){
text2[i] =(char*) malloc(length*sizeof(char));
}
char text3[LINES+LINES][length];
printf("First string,Please enter %d names (only capital letters,without spaces):", LINES);
for ( i=0 ; i<LINES ; i++){
gets(text1[i]);
}
printf("Second string,Please enter %d names (only capital letters,without spaces):", LINES);
for ( i=0 ; i<LINES ; i++){
gets(text2[i]);
}
PrintStr1(text1);
PrintStr2(text2);
SortText1(text1);
system("pause");
return ;
}
void SortText1(char **text1){
int i,j,k;
for (i=LINES-1 ; i>0 ; i--){
for ( j=0 ; j<i ; j++ ){
if(strcmp(text1[i],text1[i+1]) > 0 ){
char *temp=text1[i+1];
text1[i+1]=text1[i];
text1[i]=temp;
}
}
}
printf("The first string sorted:\n");
for ( k=0 ; i<LINES ; k++){
printf("%s ",text1[k]);
}
printf("\n");
}
void PrintStr1(char **text1){
int i;
printf("The first string of NAMES:\n");
for ( i=0 ; i<LINES ; i++){
printf("%s ",text1[i]);
}
printf("\n");
}
void PrintStr2(char **text2){
int i;
printf("The second string of NAMES:\n");
for ( i=0 ; i<LINES ; i++){
printf("%s ",text2[i]);
}
printf("\n");
}
- Wenn Sie möchten, dass wir Blick auf die Zeilennummern in den Fehler, bitte fügen Sie Zeilennummern in der Quelle. Ideal wäre es, wenn könnten Sie ein kleineres Beispiel, dass zeigt das gleiche problem.
- mögliche Duplikate von Fehler B. c2143: Syntaxfehler : fehlendes ';' vor 'type'
- Wie füge ich Zeilennummern?
- Ich bekomme keine Fehler wenn ich Ihren code kompilieren mit mingw, aber überprüfen Sie die Zeile, die sagt für ( k=0 ; i<ZEILEN ; k++)
- Oh, nevermind. Es ist in ansi C nicht c99. Ich werde erklären, in einem längeren Kommentar.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bekommen Sie diese Fehler, weil Sie erklären, Ihre lokalen Variablen, die nicht in den Anfang des Bereichs.
Die Möglichkeit zum deklarieren von Variablen in der Mitte der Rahmen wurde erstmals im C99-standard, was ist nicht unterstützt von MS-Compilern.
Verschieben Sie die Deklarationen von lokalen Variablen werden nach
{
und vor allen anderen Anweisungen in dem block werden Sie verwendet.Dein compiler scheint die Verwendung einer älteren version der C-standard. Es nicht zulassen, dass Erklärungen in der Mitte eines Blocks. Sie müssen verschieben alle Erklärungen, damit Sie alle kommen vor der ersten ausführbaren Anweisung des Blocks.
Sicher sein, geben Sie lokale Variablen, die nur in den Beginn einer Funktion Körper. Sonst, der C-compiler geben könnte Sie zu einem Kompilierungsfehler.
In C89, man kann Sie nur mit der Deklaration der Variablen am Anfang eines Blocks. Diese Einschränkung entfernt wurde in C99.
Aber Visual Studio 2010 nicht unterstützt C99 noch. So haben Sie zu bleiben C89 Stil:
Ältere standards von C wird nicht lassen Sie dies tun (wobei C++ und neuere C-standards). Sie können mit ihm arbeiten, obwohl durch die Einführung eines neuen Körpers:
In ansi-C, das ist c89, müssen Sie deklarieren alle Variablen in einer Funktion etwas anderes vor.
Main sollte geändert werden, um
Wenn Sie möchten, um Variablen zu deklarieren, in der Mitte des Codes, die Sie verwenden müssen, c99 (oder vielleicht ist dein compiler hat eine weitere option für Sie).
/Alles nach das ist Erbsenzählerei.
Als eine Frage des Stils, sollten Sie nutzen #define-Konstanten wie Länge.
Und Sie sollte erklären, Ihre Funktionen sind statisch, damit Sie nicht verschmutzen globalen namespace:
Main werden sollte int main(int argv, char** argc) statt void main()
Sie brauchen nicht zu zählen malloc.h und conio.h, es sei denn dein compiler nicht definieren Sie die standard-Bibliotheken korrekt.
sollte sich ändern, das ich auf k.
Einrücken ist inkonsistent.
Außerdem sollten Sie schreiben Ihre Programme ein kleines Stück zu einer Zeit. Schreiben viele Funktionen und dann versucht zu kompilieren, Sie führen zu Problemen wie diesem. Wenn Sie kopieren von jemand anderem Hausaufgaben, dann natürlich werden Sie gerade kompilieren, einige große Seite scheitern, aber wenn Sie schreiben, diese auf eigene Faust, wird es viel schneller zu bedienen kurze Stücke von code zwischen Zusammenstellungen.
/Ende Erbsenzählerei
Gutes Glück mit Ihrem Projekt.