gpt4 book ai didi

c - 试图读取制表符分隔字符串的文件并将它们放入数组并输出,但我只得到一个字符?

转载 作者:太空宇宙 更新时间:2023-11-04 02:56:04 27 4
gpt4 key购买 nike

我生成了一个简单的制表符分隔文件,格式如下:

a    aa    aaa
b bb bbb
...
...
y yy yyy
z zz zzz

我试图逐行读取文件,并将字符串放入字符串数组,然后输出字符串数组的内容。这是我的代码:

#include <stdio.h>  
#include <stdlib.h>

int main() {
int BUF = 1024;
FILE * fp;
char * line = NULL;
size_t len = 0;
fp = fopen("~/testdataStrings.txt", "r") ;
ssize_t read;


char n[BUF] ;
int offset,index = 0 ;
while ((read = getline(&line, &len, fp)) != -1) {
char* array[3] ;
index = 0 ;
while ( 1 == sscanf(line, "%s%n[^\n]", n, &offset) ) {
// printf("%s\n", n) ; //n contains the proper value, a,aa,or aaa
array[index] = n ;
line += offset ;
index++ ;
}


int i = 0;
while(i < 3) {
printf("%s\n", array[i]) ;
i++ ;
}
}
}

预期的输出是:a,aa,aaa,b,bb,bbb 等,用换行符分隔,但我得到的是:aaa,aaa,aaa,bbb,bbb,bbb 等,用换行符分隔?我哪里做错了?

谢谢。

最佳答案

array[index] = n ;

指向 n缓冲。所有数组元素将指向同一个缓冲区 n .和 n将保留 sscanf() 读取的最后一个字符串

所以你必须创建n的重复内存每次填充 n 时缓冲用 sscanf() 缓冲

所以改变

array[index] = n ;

array[index] = strdup(n) ;

关于c - 试图读取制表符分隔字符串的文件并将它们放入数组并输出,但我只得到一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17194462/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com