我想解析一个包含多个换行符的字符串,每行都用逗号分隔,我想打印每行中用逗号分隔的每个元素。这是我尝试过的方法,但是没用。
#include <stdio.h>
#include <string.h>
int main() {
char cadena[] = "10,Arbol,3.5\n20,Perro,4.0\n30,Mesa,4.5";
char cadena_copy[sizeof(cadena)]; // Crea una copia de cadena
strcpy(cadena_copy, cadena);
char *linea = strtok(cadena_copy, "\n"); // Tokeniza la cadena por saltos de línea
// Itera sobre cada línea
while (linea != NULL) {
char *token = strtok(linea, ","); // Tokeniza la línea por comas
// Itera sobre cada valor en la línea
while (token != NULL) {
printf("%s\n", token); // Imprime el valor
token = strtok(NULL, ","); // Obtiene el siguiente valor
}
linea = strtok(NULL, "\n"); // Obtiene la siguiente línea
}
return 0;
}
这就是我期望的输出:
10
Arbol
3.5
20
Perro
4.0
30
Mesa
4.5
但是我只得到第一行:
10
Arbol
3.5
我该如何解决这个问题?
只需在分隔符字符串中使用两者即可
int main() {
char cadena[] = "10,Arbol,3.5\n20,Perro,4.0\n30,Mesa,4.5";
char cadena_copy[sizeof(cadena)]; // Crea una copia de cadena
strcpy(cadena_copy, cadena);
char *token = strtok(cadena_copy, ",\n");
// Itera sobre cada valor en la línea
while (token != NULL) {
printf("%s\n", token); // Imprime el valor
token = strtok(NULL, ",\n"); // Obtiene el siguiente valor
}
return 0;
}