在这个程序中,我正在使用fgets
解析csv文件,并根据我对c prog的了解,将文件转换为数组。
因此,当我用printf("%s",input)
打印出来时,我得到了这个10,20,30,但是当我包含printf("%s",input[0])
时程序停止工作。
这是我正在制作的计划:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct xa
{
int x;
int y;
int z;
} xo;
int main()
{
FILE *dudufile;
char filename[]="dodo.dat";
char input[1679];
dudufile=fopen(filename,"r");
while ( fgets(input,1679, dudufile ) != NULL )
{
printf("%s\n",input);
printf("%s\n",input[0]);
struct xa;
xo.y=input[1];
printf("%d",xo.y);
}
return 0;
}
答案 0 :(得分:5)
编译警告:
警告:格式'%s'需要'char *'类型的参数, 但是参数2的类型为'int'[-Wformat]
应该是:
printf("%c\n",input[0]);
答案 1 :(得分:4)
这是错误的:
printf("%s\n",input[0]);
这里你告诉printf
打印一个字符串,但是给一个字符作为参数。这会导致未定义的行为和崩溃。
如果编译器没有对此发出警告,您可能需要启用更多警告。虽然警告消息不是编译器的错误,但它们经常指出代码中的问题,这些问题通常会导致未定义的行为。
答案 2 :(得分:2)
input[0]
不是字符串(%s
期望的内容),而是char
。如果要打印该字符,则需要使用%c
格式说明符。
答案 3 :(得分:2)
好吧,input[0]
不是%s
想要的字符串指针。
如果您想打印一个单个字符,则应使用%c
。