我正在尝试逐个字符检查,因此我需要在2D数组中一次访问一个字符。我尝试使用双指针(例如:**p
),但我的程序崩溃了。所以我使用*p
,但它给了我垃圾。
这是我的代码:
FILE *in;
in = fopen("thefiles.txt", "r");
if (!in) {
printf("Failed to open input file\n");
exit(1);
}
int j;
char phrase[N_STRINGS][MAX_LENGTH_OF_A_SINGLE_STRING];
char string[MAX_LENGTH_OF_A_SINGLE_STRING];
for( j = 0; j < N_STRINGS; j++ )
{
fscanf( in, "%s", string );
strcpy( phrase[j], string );
}
char *p;
*p = phrase[0][0];
// Trying to use a pointer to point at the beginning(?) of the array
printf( "P = %s", p);
// After printing it out, I see that it gives me rubbish
非常感谢!
编辑:
好吧,我想我刚解决了自己的问题。哈! 我只需要:char p = phrase[0][0];
首先不应该搞乱指针:P
答案 0 :(得分:1)
假设短语是单词,这是一个应该做你想要的示例程序。如果你想要的只是看到存储在文件中的第一个单词的值。
#include <stdio.h>
#define N_STRINGS 2
#define MAX_LENGTH_OF_A_SINGLE_STRING 1024
int main()
{
FILE *in;
in = fopen("thefiles.txt", "r");
if (!in) {
printf("Failed to open input file\n");
exit(1);
}
int j;
char phrase[N_STRINGS][MAX_LENGTH_OF_A_SINGLE_STRING];
char string[MAX_LENGTH_OF_A_SINGLE_STRING];
for( j = 0; j < N_STRINGS; j++ )
{
fscanf( in, "%s", string );
strcpy( phrase[j], string );
}
char *p = phrase[0];
printf( "P = %s", p);
return 0;
}