В моем коде я читаю значения, разделенные запятыми из файла. Я использую функцию remove для удаления запятой. Там, где у меня возникают проблемы, повторяется строка. Я чувствую, что цикл for
, который я использую для итерации по строке, является правильным, но я, вероятно, делаю что-то действительно глупо, потому что программа терпит неудачу. Итак, как я правильно перебираю строку?Итерация по строке в C
каждая строка в файле имеет формат, аналогичный:
0000000000001110,1
Вот мой код:
#include <stdio.h>
#include <stdlib.h>
void removeChar(char *str, char garbage);
int main(){
FILE *ifp;
char *mode = "r";
ifp = fopen("in.csv", mode);
char* string;
int i, len;
while(fscanf(ifp, "%s", string)!=EOF){
removeChar(string, ',');
printf("%s \n", string); //gives me correct output of string with no comma
len = strlen(string);
for(i=0; i<len; i++) //where the error occurs
printf("%c", string[i]);
}
return 0;
}
void removeChar(char *str, char garbage) {
char *src, *dst;
for (src = dst = str; *src != '\0'; src++) {
*dst = *src;
if (*dst != garbage) dst++;
}
*dst = '\0';
}
какая ошибка вы получаете? – Haris
@haris На самом деле нет ошибок, программа просто падает. – Ybarra
Мне удалось выполнить итерацию по строке, используя тот же метод, но в другой программе. Я не знаю, что здесь отличает, что вызывает ошибку. – Ybarra