user-0 提问: 程序有问题求高手

回复:
user: user-1
content: 你用这段程序生成文件，在工程目录下找到该文件，然后把内容粘贴过去，再测试以上代码  int main(void) { 	FILE *f = fopen("american.txt", "w"); 	fclose(f); 	return 0; }

user: user-1
content: 引用 5 楼 qq_26710209 的回复:[quote=引用 4 楼 zhangxiangDavaid 的回复:] [quote=引用 3 楼 qq_26710209 的回复:] [/code] 有一点需要注意：最后一个字符串也需要以换行结束。 还是无法运行，不知道为什么[/quote] 这个文件有吗？american.txt 我都测试过[/quote] 这个文件就是我自己乱打的6行单词的文件而已。我用的是dev，编译时没有错误可以生成exe，但是显示已停止工作[/quote] 应该是文件的路径有问题

user: user-0
content: 引用 4 楼 zhangxiangDavaid 的回复:[quote=引用 3 楼 qq_26710209 的回复:] [/code] 有一点需要注意：最后一个字符串也需要以换行结束。 还是无法运行，不知道为什么[/quote] 这个文件有吗？american.txt 我都测试过[/quote] 这个文件就是我自己乱打的6行单词的文件而已。我用的是dev，编译时没有错误可以生成exe，但是显示已停止工作

user: user-1
content: 引用 3 楼 qq_26710209 的回复:[/code] 有一点需要注意：最后一个字符串也需要以换行结束。 还是无法运行，不知道为什么[/quote] 这个文件有吗？american.txt 我都测试过

user: user-0
content: 引用 1 楼 zhangxiangDavaid 的回复:修改如下：  #include <stdio.h> #include <stdlib.h> int main() { 	char *file = "american.txt"; /*american是同目录下的txt文件，有6行，每行1个单词*/ 	char **word; 	char c;   //zx 	FILE *in; 	int i = 0, j = 0; 	int num = 6; 	in = fopen(file, "r"); 	if ((word = (char**)malloc(sizeof(char*)*num)) == NULL) { 		printf("Allocate error\n"); 		exit(-1); 	} 	for (i = 0; i < num; i++) { 		if ((word[i] = (char*)malloc(sizeof(char) * 40)) == NULL) { 			printf("Allocate err. at %d line\n", __LINE__);   //zx 			exit(-1); 		} 	} 	//for (i = 0; i < num; i++) 	//	while (fgetc(in) != '\n') { 	//		*(*(word + i) + j) = fgetc(in); 	//		j++; 	//	} 	for (i = 0; i < num; i++) { 		while ('\n' != (c = fgetc(in))) { 			*(*(word + i) + j) = c; 			j++; 		} 		*(*(word + i) + j) = 0; 		j = 0; 	} 	fclose(in); 	printf("%s\n", word[0]); 	return 0; }  有一点需要注意：最后一个字符串也需要以换行结束。 还是无法运行，不知道为什么

user: user-2
content: 引用 1 楼 弓长羊羽的回复:修改如下：  #include <stdio.h> #include <stdlib.h> int main() { 	char *file = "american.txt"; /*american是同目录下的txt文件，有6行，每行1个单词*/ 	char **word; 	char c;   //zx 	FILE *in; 	int i = 0, j = 0; 	int num = 6; 	in = fopen(file, "r"); 	if ((word = (char**)malloc(sizeof(char*)*num)) == NULL) { 		printf("Allocate error\n"); 		exit(-1); 	} 	for (i = 0; i < num; i++) { 		if ((word[i] = (char*)malloc(sizeof(char) * 40)) == NULL) { 			printf("Allocate err. at %d line\n", __LINE__);   //zx 			exit(-1); 		} 	} 	//for (i = 0; i < num; i++) 	//	while (fgetc(in) != '\n') { 	//		*(*(word + i) + j) = fgetc(in); 	//		j++; 	//	} 	for (i = 0; i < num; i++) { 		while ('\n' != (c = fgetc(in))) { 			*(*(word + i) + j) = c; 			j++; 		} 		*(*(word + i) + j) = 0; 		j = 0; 	} 	fclose(in); 	printf("%s\n", word[0]); 	return 0; }  有一点需要注意：最后一个字符串也需要以换行结束。

user: user-1
content: 修改如下：  #include <stdio.h> #include <stdlib.h> int main() { 	char *file = "american.txt"; /*american是同目录下的txt文件，有6行，每行1个单词*/ 	char **word; 	char c;   //zx 	FILE *in; 	int i = 0, j = 0; 	int num = 6; 	in = fopen(file, "r"); 	if ((word = (char**)malloc(sizeof(char*)*num)) == NULL) { 		printf("Allocate error\n"); 		exit(-1); 	} 	for (i = 0; i < num; i++) { 		if ((word[i] = (char*)malloc(sizeof(char) * 40)) == NULL) { 			printf("Allocate err. at %d line\n", __LINE__);   //zx 			exit(-1); 		} 	} 	//for (i = 0; i < num; i++) 	//	while (fgetc(in) != '\n') { 	//		*(*(word + i) + j) = fgetc(in); 	//		j++; 	//	} 	for (i = 0; i < num; i++) { 		while ('\n' != (c = fgetc(in))) { 			*(*(word + i) + j) = c; 			j++; 		} 		*(*(word + i) + j) = 0; 		j = 0; 	} 	fclose(in); 	printf("%s\n", word[0]); 	return 0; }  有一点需要注意：最后一个字符串也需要以换行结束。