D
Dennis Schulz
hi y'all
im a beginner in C language and i have problems running this programm.
when i enter a newline there is a "segmentation fault". i dont know
what it means and already spent too much time looking for the reason.
maybe (hopefully) you can help me. Dennis
Coding:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void soundex(char *s, char *res) {
char buchstabe;
int ziffer;
res[0] = toupper(s[0]);
//zaehler
int j=0;
while(strlen(res)< 7) {
buchstabe = toupper(s[j]);
switch (buchstabe) {
case 'B':
case 'F':
case 'P':
case 'V':
ziffer = 1;
break;
case 'C':
case 'K':
case 'Q':
case 'J':
case 'G':
case 'S':
case 'X':
case 'Z':
ziffer = 2;
break;
case 'D':
case 'T':
ziffer = 3;
break;
case 'L':
ziffer = 4;
break;
case 'M':
case 'N':
ziffer = 5;
break;
case 'R':
ziffer = 6;
break;
}
int zifferAlsString;
sprintf(zifferAlsString, "%d", ziffer);
// letztes zeichen in res:
char lastchar = res[strlen(res)-1];
//wenn ziffer ungleich letztem zeichen in res
if (ziffer != lastchar) {
strcat(res, zifferAlsString);
}
//zaehler erhoehen
j++;
} // end while
if (strlen(res)<7) {
int k;
// Rest mit Nullen fuellen
for(k = (strlen(res)-1); k<7; k++) {
strcat(res,'0');
} // end for
} // end if
// trennzeichen hin
strcat(res,'\0');
} //end soundex
int main() {
/* lese zeichenkette ein */
char wort[1000];
char ausgabe[1000];
printf("%s", "Bitte Eingabe treffen: " );
printf("\n");
while(scanf("%s", &wort) != EOF) {
soundex(wort, &ausgabe);
printf("%s", "Der Code ist :");
printf("%s", ausgabe);
printf("\n");
} // end while
} // END MAIN
im a beginner in C language and i have problems running this programm.
when i enter a newline there is a "segmentation fault". i dont know
what it means and already spent too much time looking for the reason.
maybe (hopefully) you can help me. Dennis
Coding:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void soundex(char *s, char *res) {
char buchstabe;
int ziffer;
res[0] = toupper(s[0]);
//zaehler
int j=0;
while(strlen(res)< 7) {
buchstabe = toupper(s[j]);
switch (buchstabe) {
case 'B':
case 'F':
case 'P':
case 'V':
ziffer = 1;
break;
case 'C':
case 'K':
case 'Q':
case 'J':
case 'G':
case 'S':
case 'X':
case 'Z':
ziffer = 2;
break;
case 'D':
case 'T':
ziffer = 3;
break;
case 'L':
ziffer = 4;
break;
case 'M':
case 'N':
ziffer = 5;
break;
case 'R':
ziffer = 6;
break;
}
int zifferAlsString;
sprintf(zifferAlsString, "%d", ziffer);
// letztes zeichen in res:
char lastchar = res[strlen(res)-1];
//wenn ziffer ungleich letztem zeichen in res
if (ziffer != lastchar) {
strcat(res, zifferAlsString);
}
//zaehler erhoehen
j++;
} // end while
if (strlen(res)<7) {
int k;
// Rest mit Nullen fuellen
for(k = (strlen(res)-1); k<7; k++) {
strcat(res,'0');
} // end for
} // end if
// trennzeichen hin
strcat(res,'\0');
} //end soundex
int main() {
/* lese zeichenkette ein */
char wort[1000];
char ausgabe[1000];
printf("%s", "Bitte Eingabe treffen: " );
printf("\n");
while(scanf("%s", &wort) != EOF) {
soundex(wort, &ausgabe);
printf("%s", "Der Code ist :");
printf("%s", ausgabe);
printf("\n");
} // end while
} // END MAIN