Wörter suchen und zählen in der Programmiersprache C

Hallo, Wir müssen als Aufgabe ein Programm in der Programmiersprache C schreiben, dass von einem Textdokument mit beliebigen Inhalt ein Bestimmtes Wort oder einen Bestimmten Buchstaben in einem Wort sucht und zählt wie viele gleiche Wörter bzw gleiche Buchstabenfolge hintereinander in diesem Textdokument sind. Ich habe da schon einen Anfang gemacht, der allerdings nur ein Wort in einer Zeile zählt und dann einfach in die nächste geht:

include <stdio.h> include <conio.h> include <string.h> include <stdlib.h> include <time.h>

char *self_strstr(char *text,char *suche);

int main(int argc, char **argv) { //Variablen FILE *fp; char zeile[100], worte[100]; int n=0, i=0;

//Startet die Ticks
clock();


//Programmablauf
fp = fopen(argv[1], "rt");
while(fgets(zeile, sizeof(zeile), fp) != NULL)
    if (self_strstr(zeile, argv[2]) != NULL)
        n++;
fclose(fp);

//Ausgabe
printf("Anzahl des gesuchten Wortes: %d\n", n);
printf("Ticks: %d", clock());
return 0;

}

char *self_strstr(char *text, char *suche) { int i=0; int j=0; int suche_size; suche_size = strlen(suche); while(text[i] != '\0' && suche_size != 0) { if(text[i]==suche[j]) { suche_size--; j++; } else { suche_size = strlen(suche); j = 0; i=i-j; // hüpfe zum zu letzt Verglichenen Feld von String text } i++; } if (suche_size == 0) return i; else return NULL; }

ich hoffe ihr könnt mir bei helfen es weiterzuschreiben.

Programm, programmieren, Java, CPP, PHP, Python
c, c++ | LNK2019, Verweiß auf nicht aufgelöstes externes Symbol?

Natürlich habe ich, bevor ich hier frage, auch schon im Internet nach vorherigen ähnlichen Problemen gesucht und die gab es natürlich auch, aber keine der bereits vorhandenen Lösungen hat mir in meinem speziellen Fall wirklich geholfen.

Soweit wie ich es verstanden habe, meint dieser Error, dass man zB innerhalb einer Funktion einen Funktionsaufruf hat, von einer Funktion aus einer anderen Datei, diese findet der Linker aber nicht.

Es ist auch tatsächlich so, dass ich neben der Datei meiner main auchnoch andere Dateien verwende, nämlich genau zwei: header.h und header.cpp.

In der Headerdatei habe ich nur Deklarationen, in der cpp die entsprechenden Definitionen, beide Dateien habe ich im richtigen Verzeichnis und auch im Projekt-Explorer hinzugefügt, compilieren kann ich auch alles.

Bisher hatte es eigentlich immer funktioniert (unter der Voraussetzung dass ich die Dateien im Proj-Expl hinzugefügt habe)

Jetzt habe ich im selbigen namespace 4000 weitere Zeilen hinzugefügt, welche extern auch problemlos funktioniert haben und auch hier wird intellisense keine Fehler, aber sobald ich irgend eine der neuen Funktionen verwende (die alten gehen nach wie vor), wirft mir der Linker den Fehler LNK2019

(ConsoleApplication47.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""bool __cdecl MS::Experimental::save<int>(char const * const,int &)" (??$save@H@Experimental@MS@@YA_NQBDAAH@Z)" in Funktion "_main")

Zugegeben, es ist nicht ganz der gleiche namespace, aber der namespace befindet sich im gleichen namespace.

In der Headerdatei liegen die gleichen namespaces mit den Deklarationen und Visual Studio findet auch die dazugehörigen Definitionen.

Woran könnte es liegen? Muss ich vielleicht irgendwo in den Projekteinstellungen unter Linker eigentlich noch angeben, dass ich Funktionen aus der cpp nutze? Oder muss ich die Deklarationen mit dem Schlüsselwort extern machen?

Danke im Voraus schonmal für alle Antworten.

Hier noch für die die sich den Code durchlesen wollen (zumindest Teile)

Header:

namespace MS
{
  namespace Experimental
  {
    template <>  //Spezialisierung von vorheriger Funktion
    bool save(const char varName[], char &var);
  }
}

Cpp:

http://codepad.org/I6zkckyk       (ist zu lang)

Ich weiß, das ist alles im Moment noch nicht so schön gelöst, aber das ist ja auch noch nicht fertig :)

Alle Konstanten mit F_ sind im header definiert und werden erkannt.

Alle Funktionen mit F_ sind für den namespace von mir erstellte Funktionen, sie befinden sich über dieser Funktion.

Computer, Technik, programmieren, CPP, Technologie, Spiele und Gaming
C++: Ursache für Lesezugriffsverletzung?

Hallo,

ich komme an einer Stelle nicht weiter und könnte noch einmal Hilfe gebrauchen. Ich nutze die Bibliothek Libtiff um die Farbwerte von einem Bild in einen Vector zu speichern bekomme aber eine Lesezugriffsverletzung. Anbei der Code:

void GetImage(TIFF* tif)
{
	uint32 npixels = width * height * sizeof(uint32);
	uint32* raster;
	std::vector <uint32> image;
	raster = (uint32*)_TIFFmalloc(npixels);
	if (TIFFReadRGBAImageOriented(tif, width, height, raster, ORIENTATION_TOPLEFT, 0) == 1)
	{
		std::cout << npixels << std::endl;
		for (uint32 i = 0; i < npixels; i++)
		{
			image.push_back(raster[i]);
		}
		std::cout << image[0] << std::endl;
	};
}

TIFFReadRGBAImageOriented

speichert die Pixelwerte von einem Bild in die Variable "raster" mit der Größe von "npixels". Ich möchte diese Werte später verwenden und sie deshalb global abspeichern. Deshalb habe ich den Vector

std::vector <uint32> image;

deklariert und möchte mit der for-Schleife die Werte von raster in image kopieren.

Ich bekomme leider folgende Fehlermeldung:

Ausgelöste Ausnahme: Lesezugriffsverletzung

std::forward<unsigned int const & __ptr64>(...) hat 0x22A6E503000 zurückgegeben.

npixels = 482241600. Wenn ich bei der for-Schleife anstelle von npixels 48224160 schreibe (also eine 0 weglasse), bekomme ich keine Fehlermeldung mehr. "raster" scheint also mehr Werte zu haben, als man in den Vector "image" hineinschreiben kann. Zumindest interpretiere ich das Problem so.

Ist meine Interpretation richtig und wenn ja, was kann ich tun um die Werte von raster irgendwie global abzuspeichern.

Viele Grüße

CPP, Cpp Programierung
"<objekt>": Unbekannter Überschreibungsspezifierer [C++ | Visual Studio Community]?

Hallo, lieber Leser,

leider gelingt es mir partout nicht, Objektinstanzen innerhalb von Klassen weiter zu verwenden und ich befürchte, dass ich etwas Grundlegendes im Konzept der OOP übersehe bzw. nicht kenne.

In einem kleinen Freizeitprojekt von mir werden, was Beweggrund für diesen Post hier war, leider eine Reihe von Fehlern ausgespuckt, für die zu lösen zu versuchen ich schon eine Menge Zeit aufgewandt habe und welche ich alle auf eine Unkenntnis eines wichtigen Konzeptes, wie oben schon beschrieben, zurückführe.

Ich würde mich über konkrete Lösungsvorschläge genauso freuen, wie auf Hinweise, was ich wohl konzeptuell nicht so recht verstanden habe. Vielen Dank.

main.cpp: https://pastebin.com/PKCF75FR

Fehler: Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand

Fehler C3646 "difficulty": Unbekannter Überschreibungsspezifizierer C:\Users*\source\repos*\main.cpp 9

Fehler C3646 "getDifficulty": Unbekannter Überschreibungsspezifizierer C:\Users*\source\repos*\main.cpp 20

Fehler C2065 "Item": nichtdeklarierter Bezeichner C:\Users*\source\repos*\main.cpp 76

Fehler C3646 "playerClass": Unbekannter Überschreibungsspezifizierer C:\Users*\source\repos*\main.cpp 73

Fehler C2923 "std::vector": "Item" ist kein gültiges Vorlage-Typargument für den _Ty-Parameter. C:\Users*\source\repos*\main.cpp 76

Fehler C4430 Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. * C:\Users*\source\repos*\main.cpp 73

Fehler C2059 Syntaxfehler: "(" C:\Users*\source\repos*\main.cpp 20

Fehler C2059 Syntaxfehler: "=" C:\Users*\source\repos*\main.cpp 9

Fehler C2238 Unerwartete(s) Token vor ";" C:\Users*\source\repos*\main.cpp 9

Fehler C2334 Unerwartete(s) Token vor "{"; sichtbarer Funktionstext wird übersprungen C:\Users*\source\repos*\main.cpp 20

Fehler C1903 Weiterverarbeitung nach vorherigem Fehler nicht möglich; Kompilierung wird abgebrochen. C:\Users*\source\repos*\main.cpp 76

Grundlegende Fehler, also noch grundlegender, als die oben beschriebenen, dürfen ignoriert werden.

Computer, programmieren, CPP, Informatik, Visual Studio, Objektorientierung, Objektorientierte Programmierung
Fehler bei einem Quellcode(c++) -------------------------- expected unqualified-id before ‘{’ token?

Grüßt euch,

ich versuche seit einigen Minuten einen Quellcode zu schreiben. Irgendwie bekomme ich immer diese Fehlermeldung: "expected unqualified-id before ‘{’ token" in Zeile 10.

Ich finde da aber kein Fehler!!! Kann mir jemand mit ein wenig Erfahrung sagen, was mir der compiler sagen will?

Vielen lieben Dank.

// Matrix.cpp
#include <iostream>
#include <ctime> // random numbers
using namespace std;
const int COLUMN = 5;  // number of columns has to be constant
const int MAXROW = 5;

//------------------- definition of functions -----------------------
void showMat(double a[][COLUMN], int r);  // COLUMN must be given
{
    for  (int i = 0, i < 0, i++)
{
    for (int j = 0, j < COLUMN; j++)
    {
         cout << a[j] [a] <<" ";
    }
cout << endl;
          }
}
//-----------------------------------------main() - function ---------------------------------------

int main()
{
                      srand(time (0));
                       int  r;

                      do
                      {
cout << " Geben Sie die gewünschte Anzahl der Zeilen an maximal 5." << endl;
cin >> r;
} while (r < 1 || r > MAXROW);

double MatrA [COLUMN] [MAXROW] ;
double MatrB [COLUMN] [MAXROW] ;
double MatrS [COLUMN] [MAXROW] ;
double MatrD [COLUMN] [MAXROW] ;

for  (int i = 0; i <  r;  i++)
{
    for  (int j = 0; j < COLUMN; j++)
    {
                    MatrA[j][i]  = rand() % 10;
                    MatrB[j][i]  = rand() % 10;
                   MatrS[j][i]  = MatrA[j][i] +  MatrA[j][i];
                  MatrD[j][i]  = MatrA[j][i]  -  MatrA[j][i];  
              }
}
cout << endl << "Matrix A:" << endl;
showMatr(MatrA, r);
cout << endl << "Matrix B:" << endl;
showMatr(MatrB, r);
cout << endl << " Additionsmatrix:"<< endl;
showMatr(MatrS, r);
cout << endl << " Differentmatrix:" << endl;
showMatr(MatrD, r);
cout << endl;
system ("Pause");
return 0;
}
Computer, Technik, programmieren, compiler, Cplusplus, CPP, Informatik, Quellcode