const char * const str = ch;
にはwarning:initialization makes pointer from integer without a cast
があります。初期化はC言語のキャストのない整数からポインタを作成する警告
const char * const str = (char*)ch
に変更すると、警告はcast to pointer from integer of different size
になります。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv){
FILE *file1;
char ch;
char array[100];
file1 = fopen("list.txt","r");
while((ch=fgetc(file1))!=EOF)
{
const char * const str = (char*)ch;
const char * const delim = "\n";
char * const dupstr = strdup(str);
char *saveptr = NULL;
char *substr = NULL;
int count = 0;
printf("original string is %s",dupstr);
substr = strtok_r(dupstr, delim, &saveptr);
do{
printf("#%d filename is %s\n", count++, substr);
substr = strtok_r(NULL, delim, &saveptr);
}
while(substr);
free (dupstr);
return 0;
}
fclose(file1);
return 0;
}
など、
fgets
を使用して開かれたファイルからのフルラインを読んで、文字の配列を使うのか? – 4386427初期化されていないローカル変数 'ch'を持つ' const char * const str =(char *)ch; 'と' const char * const str = ch; 'という式は、未知数とWRONG値(アドレス)をポインタに割り当てます'str' – VolAnd
あなたのコードはchar *でうまく動作します。なぜあなたはconst char * constを使いましたか? – LPs